Windows 平台上的最大文件大小

Windows 平台上的最大文件大小

根据这个维基百科页面,在 NTFS 中,Win10 上单个文件的大小可以达到约 8 PB。然而 struct 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。这意味着大约 4 GB 的限制。根据此 stackoverflow 页面,即使对于 32 位操作系统,文件的大小也可能比它更大。

除非我弄错了什么,否则如何使用 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;
};

这里st_size__int6464 位而不是 32 位。

相关内容