Максимальный размер файла на платформе Windows
Согласно этой странице википедии, размер отдельного файла на 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?
1 ответ
Решение
Лучше использовать 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-битным.