Dosyanın Büyüklüğünü Bulma
Dosyanın büyüklüğü bulunurken dosyayla ilişkili metadata sonuca dahil edilmez. Metadata diskte ayrı bir alanda saklanmaktadır.
Java
Eğer dosya açılmış ise lseek ile de dosyanın büyüklüğü bulunabilir. lseek (long seek) anlamına geliyor.
QT
Win32 zengin bir API sunuyor
.
GetFileSizeEx
Örnek ver
GetFileAttributesEx
Örnek ver
GetFileInformationByHandle
Eğer dosya başka bir uygulama tarafından kullanılıyorsa bile boyunu alabilmemizi sağlar.
Şöyle yaparız.
Dosyanın büyüklüğü bulunurken dosyayla ilişkili metadata sonuca dahil edilmez. Metadata diskte ayrı bir alanda saklanmaktadır.
Java
File file = new File (path);C#
file.length ();
new FileInfo (path).Length;C
struct stat file;Burada dikkat edilmesi gereken nokta st_size alanının signed int olarak tanımlı olması.
stat("path", &file);
printf("%d",stat.st_size);
Eğer dosya açılmış ise lseek ile de dosyanın büyüklüğü bulunabilir. lseek (long seek) anlamına geliyor.
// Get size.
off_t size = lseek(fd, 0, SEEK_END);
// Seek back to the beginning.
lseek(fd, 0, SEEK_SET);
QT
QFile newFile("C:/Users/testfile");Win32
newFile.size();
Win32 zengin bir API sunuyor
.
GetFileSizeEx
Örnek ver
GetFileAttributesEx
Örnek ver
GetFileInformationByHandle
Eğer dosya başka bir uygulama tarafından kullanılıyorsa bile boyunu alabilmemizi sağlar.
ULONGLONG filesize = 0;
HANDLE h = CreateFile(filename, 0, FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (h != INVALID_HANDLE_VALUE)
{
BY_HANDLE_FILE_INFORMATION info;
memset(&info, 0, sizeof(BY_HANDLE_FILE_INFORMATION));
if (GetFileInformationByHandle(h, &info))
{
ULARGE_INTEGER ul = { 0 };
ul.LowPart = info.nFileSizeLow;
ul.HighPart = info.nFileSizeHigh;
filesize = ul.QuadPart;
}
CloseHandle(h);
}
FindFirstFileŞöyle yaparız.
WIN32_FIND_DATA ffd;
HANDLE hfind = FindFirstFile(filename, &ffd);
if (hfind != INVALID_HANDLE_VALUE)
{
DWORD filesize = ffd.nFileSizeLow;
//for files larger than 4GB:
ULARGE_INTEGER ul;
ul.LowPart = ffd.nFileSizeLow;
ul.HighPart = ffd.nFileSizeHigh;
ULONGLONG llfilesize = ul.QuadPart;
FindClose(hfind);
}
Hiç yorum yok:
Yorum Gönder