Windows 平台上的最大檔案大小

Windows 平台上的最大檔案大小

根據這個維基百科頁面,Win10 上的單一檔案大小在 NTFS 下可達 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 位元。

相關內容