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