Максимальный размер файла на платформе Windows

349
John Z. Li

Согласно этой странице википедии, размер отдельного файла на Win10 может увеличиться до 8 ПБ с NTFS. И все же структура Stat определяется как

struct stat { _dev_t st_dev; _ino_t st_ino; unsigned short st_mode; short st_nlink; short st_uid; short st_gid; _dev_t st_rdev; _off_t st_size; time_t st_atime; time_t st_mtime; time_t st_ctime; }; 

где off_t - это тип, определенный как long. Это означает ограничение примерно в 4 ГБ. Согласно этой странице, описывающей стекопоток, даже для 32-разрядных ОС размер файла может быть больше его.

Если я не ошибаюсь, как можно использовать struct stat для надежного получения размера файла. Кроме того, что произойдет, если размер файла превысит ограничение типа long?

5

1 ответ на вопрос

4
harrymc

Вам лучше использовать 64-битные версии функций stat .

Структура __stat64 из stat.hвключаемого файла:

struct _stat64 { _dev_t st_dev; _ino_t st_ino; unsigned short st_mode; short st_nlink; short st_uid; short st_gid; _dev_t st_rdev; __int64 st_size; __time64_t st_atime; __time64_t st_mtime; __time64_t st_ctime; }; 

Вот здесь st_sizeесть __int64что 64-битная, а не 32-бит.

Thanks. I thought __stat64 is for 64-bit OS. John Z. Li 5 лет назад 0
If you are on a 32-bit system you can still use the [GetFileSize function](https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfilesize). harrymc 5 лет назад 0
That is exactly I am looking for John Z. Li 5 лет назад 0