2010-05-10 4 views
3

Как получить размер файла файла на C, когда размер файла превышает 4 ГБ?Как получить размер файла большого (> 4 ГБ) файла?

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

Что делать, если файл больше 4 ГБ?

+5

На какой ОС? Это не полностью стандартизировано. –

+1

здесь: http://stackoverflow.com/questions/1035657/seeking-and-reading-large-files-in-a-linux-c-application – Drakosha

+0

Может ли это помочь вам: http://stackoverflow.com/questions/ 238603/how-can-i-get-a-files-size-in-c – Boris

ответ

2

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

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

+0

Документация glibc показывает, что 'ftell' возвращает' long int' и 'ftello', возвращающий' off_t'. http://www.gnu.org/software/libc/manual/html_node/File-Positioning.html –

2

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

1

попробовать

#define _LARGEFILE64_SOURCE 1 
#define _FILE_OFFSET_BITS 64 

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

Смежные вопросы