如何使用c获取大文件大小

时间:2009-11-02 03:31:33

标签: c file

我需要获取文件的大小。这些文件的大小从非常小到10千兆字节。是否有任何c函数在linux和windows中都能正常工作?我见过fileinfo64,但这似乎只是Windows,我无法确定stat支持的最大大小。

2 个答案:

答案 0 :(得分:3)

Linux提供stat64调用,该调用应相当于fileinfo64。我只想使用#ifdef来选择正确的。{/ p>

事实上,粗略的谷歌似乎表明Windows中也可以使用stat64,因此它可能比你想象的要容易。

答案 1 :(得分:2)

在Windows中,您可以使用GetFileSize()。此函数的第一个参数是文件句柄,第二个参数引用DWORD,返回时将包含文件大小的高32位。该函数返回文件大小的低32位。

例如

DWORD dwFileSizeLow;
DWORD dwFileSizeHigh;
HANDLE hFile;

hFile = CreateFile (/* Enter the thousands of parameters required here */);

if (hFile != INVALID_HANDLE_VALUE)
    dwFileSizeLow = GetFileSize (hFile, &dwFileSizeHigh);

unsigned __int64 fullSize = (((__int64) dwFileSizeHigh) << 32) | dwFileSizeLow