Как получить большой размер файла с помощью c - PullRequest
1 голос
/ 02 ноября 2009

Мне нужно получить размер файлов. Размер этих файлов варьируется от очень маленьких до 10 гигабайт. Существуют ли функции c, которые работают как в Linux, так и в Windows, чтобы сделать это? Я видел fileinfo64, но это, похоже, только окна, и я не смог определить максимальный размер, поддерживаемый stat.

Ответы [ 2 ]

3 голосов
/ 02 ноября 2009

Linux предоставляет вызов stat64, который должен быть эквивалентен fileinfo64. Я бы просто использовал #ifdef, чтобы выбрать правильный.

На самом деле беглый Google, похоже, указывает, что stat64 также доступен в Windows, поэтому это может быть проще, чем вы думаете.

2 голосов
/ 02 ноября 2009

В Windows вы можете использовать GetFileSize(). Первый параметр этой функции является дескриптором файла, а второй параметр принимает ссылку на DWORD, который при возврате будет содержать старшие 32-битные размера файла. Функция возвращает младшие 32 бита размера файла.

Например

DWORD dwFileSizeLow;
DWORD dwFileSizeHigh;
HANDLE hFile;

hFile = CreateFile (/* Enter the thousands of parameters required here */);

if (hFile != INVALID_HANDLE_VALUE)
    dwFileSizeLow = GetFileSize (hFile, &dwFileSizeHigh);

unsigned __int64 fullSize = (((__int64) dwFileSizeHigh) << 32) | dwFileSizeLow
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...