
В соответствии сэта страница википедии, размер отдельного файла на 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 ГБ. Согласноэта страница stackoverflow, даже для 32-битной ОС размер файла может быть больше.
Если я ничего не ошибся, как можно использовать struct stat для надежного получения размера файла? Кроме того, что произойдет, если размер файла превысит предел типа long?
решение1
Лучше использовать 64-битные версии статистические функции.
Структура __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-битная.