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 类型的限制会发生什么?
您应该使用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
是__int64
64 位而不是 32 位。