ورود

View Full Version : سایز فایل در برنامه



Accidentboy
سه شنبه 06 اسفند 1387, 10:24 صبح
سلام
می خواستم سایز یه قایلی آدرس شو هم دارم پیدا کنم چجوری ؟

با تشکر

MSJazayeri
سه شنبه 06 اسفند 1387, 17:53 عصر
می توانید از API زیر استفاده کنید:


GetFileSizeEx(HANDEL hFile, PLARGE_INTEGER lpFileSize)

که در آن hFile یک هندل به فایل مورد نظر است و lpFileSize یک اشاره گر به یک مقدار long است که می خواهید انداره فایل در آن قرار بگیرد.
برای بدست آوردن هندل فایل هم می توانید از API زیر استفاده کنید:



HANDLE CreateFile(LPCTSTR lpFileName,




DWORD dwDesiredAccess,

DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
Dword dwFlagsAndAttributes,
HANDLE hTemplateFile)



که در آن lpFileName آدرس فایل موردنظر است و dwDesiredAcces نحوه دسترسی به فایل است و برای منظور شما باید برابر GENERIC_READ باشد. dwShareMode نحوه اشتراک فایل است که در این مورد باید برابر FILE_SHARE_READ باشد. lpSecurityAttributes اشاره گری به یک structure از نوع SECURITY_ATTRIBUTES است که میتوانیدآن را برابر NULL قرار دهید.




dwCreationDisposition مشخص کننده عملی است که باید در مورد فایل انجام شود. در این مورد باید برابر OPEN_EXISTING باشد.



dwFlagsAndAttributes مشخص کننده Attribute های فایل مورد نظر است و میتوان مقدار آن را از API زیر بدست آورد:




GetFileAttributes(LPCTSTR lpFileName)



که lpFileName آدرس فایل مورد نظر است.



و نهایتا" hTemlateFile که می توانید آن را برابر NULL قرار دهید.



برای مثال:




long FileSize;





HANDLE hFile = CreateFile(L"C:\\foo.txt",

GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
GetFileAttributes(L"C:\\foo.txt),
NULL);
GetFileSize(hfile, &FileSize);