Как получить размер файла большого (> 4 ГБ) файла? - PullRequest
4 голосов
/ 10 мая 2010

Как я могу получить размер файла в C, если размер файла превышает 4 ГБ?

ftell возвращает длину 4 байта со знаком, ограничивая его двумя байтами. stat имеет переменную типа off_t, которая также составляет 4 байта (не уверен в знаке), поэтому самое большее она может сказать мне размер файла 4 ГБ.

Что делать, если размер файла превышает 4 ГБ?

Ответы [ 3 ]

2 голосов
/ 10 мая 2010

В Windows GetFileSize[Ex] - это то, что вы используете.

2 голосов
/ 10 мая 2010

В Linux с glibc ftell возвращает off_t; в зависимости от флагов off_t может быть 32-разрядным или 64-разрядным.

В Linux вы можете получить соответствующие флаги для 64-битного off_t, выполнив getconf LFS_CFLAGS (LFS означает поддержку больших файлов).

1 голос
/ 10 мая 2010

1001 * попробовать *

#define _LARGEFILE64_SOURCE 1
#define _FILE_OFFSET_BITS 64

Я думаю, что в некоторых операционных системах размер off_t увеличивается до 64 бит

...