Windows 平台上的最大文件大小

Joh*_* Li 5 windows visual-c++ c++

根据这个维基百科页面,Win10 上单个文件的大小在使用 NTFS 时可以达到约 8 PB。然而结构 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;
};
Run Code Online (Sandbox Code Playgroud)

其中 off_t 是定义为 long 的类型。这意味着大约 4 GB 的限制。根据这个 stackoverflow page,即使对于 32 位操作系统,文件的大小也可能比它大。

除非我弄错了什么,否则如何使用 struct stat 可靠地获取文件的大小。此外,如果文件大小超过 long 类型的限制会发生什么?

har*_*ymc 5

您应该使用stat 函数的 64 位版本 。

stat.h包含文件中的 __stat64 结构:

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;
};
Run Code Online (Sandbox Code Playgroud)

这里st_size__int6464 位而不是 32 位。