Tamanho máximo de arquivo na plataforma Windows

Tamanho máximo de arquivo na plataforma Windows

De acordo comesta página da Wikipédia, o tamanho de um arquivo individual no Win10 pode chegar a cerca de 8 PB com NTFS. No entanto, a estrutura Stat é definida 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;
};

onde off_t é o tipo definido como longo. Isso significa um limite de aproximadamente 4 GB. De acordo comesta página stackoverflow, mesmo para sistemas operacionais de 32 bits, o tamanho de um arquivo pode ser maior que ele.

A menos que eu tenha errado alguma coisa, como alguém pode usar struct stat para obter o tamanho de um arquivo de maneira confiável. Além disso, o que acontecerá se o tamanho do arquivo exceder o limite do tipo longo?

Responder1

Você deve preferir usar as versões de 64 bits do funções estatísticas.

A __stat64estrutura do stat.harquivo de inclusão:

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

Aqui st_sizeestá __int64o que é de 64 bits e não de 32 bits.

informação relacionada