Maximale Dateigröße auf der Windows-Plattform

Maximale Dateigröße auf der Windows-Plattform

Entsprechenddiese Wikipedia-Seite, die Größe einer einzelnen Datei unter Win10 kann mit NTFS bis zu 8 PB betragen. Die Struktur Stat ist jedoch definiert als

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

wobei off_t der Typ ist, der als long definiert ist. Das bedeutet eine Grenze von ungefähr 4 GB. Lautdiese Stackoverflow-Seite, selbst bei 32-Bit-Betriebssystemen kann die Größe einer Datei größer sein.

Wenn ich mich nicht irre, wie kann man mit struct stat die Größe einer Datei zuverlässig ermitteln? Und was passiert, wenn die Dateigröße die Beschränkung des langen Typs überschreitet?

Antwort1

Verwenden Sie lieber die 64-Bit-Versionen der Stat-Funktionen.

Der __stat64Aufbau aus der stat.hInclude-Datei:

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

Hier st_sizesteht, __int64dass es 64-Bit ist und nicht 32-Bit.

verwandte Informationen