Windows プラットフォーム上の最大ファイル サイズ

Windows プラットフォーム上の最大ファイル サイズ

によるとこのウィキペディアのページWin10の個々のファイルのサイズはNTFSで約8PBまで大きくなる可能性があります。しかし、構造体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型として定義されています。つまり、およそ4GBの制限があるということです。このstackoverflowページ32 ビット OS の場合でも、ファイルのサイズはそれより大きくなる可能性があります。

私が何か間違えていない限り、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;
};

ここは32 ビットではなく 64 ビットですst_size__int64

関連情報