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

Максимальный размер файла на платформе 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 ГБ. Согласноэта страница 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находится __int6464-битная версия, а не 32-битная.

Связанный контент