Tamaño máximo de archivo en la plataforma Windows

Tamaño máximo de archivo en la plataforma Windows

De acuerdo aesta página de wikipedia, el tamaño de un archivo individual en Win10 puede llegar hasta aproximadamente 8 PB con NTFS. Sin embargo, la estructura Stat se define como

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;
};

donde off_t es el tipo definido como largo. Eso significa un límite de aproximadamente 4 GB. De acuerdo aesta página de desbordamiento de pila, incluso para sistemas operativos de 32 bits, el tamaño de un archivo puede ser mayor.

A menos que me haya equivocado en algo, ¿cómo se puede usar struct stat para obtener el tamaño de un archivo de manera confiable? Además, ¿qué pasará si el tamaño del archivo excede el límite del tipo largo?

Respuesta1

Preferiría utilizar las versiones de 64 bits del funciones estadísticas.

La __stat64estructura del stat.harchivo de inclusión:

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;
};

Aquí st_sizeestá __int64cuál es de 64 bits y no de 32 bits.

información relacionada