作者:朱金灿
来源:https://blog.csdn.net/clever101
使用stat函数获取文件大小代码如下:
#include <sys/stat.h>
#include <errno.h>
void TestDiskSpace()
{
struct stat buf;
int errno = stat("E:\\TestData\\1.tif ", &buf);
if (0 == errno)
{
printf("Get File size successful.\n");
}
else
{
perror("Problem getting information");
switch (errno)
{
case ENOENT:
printf("File not found.\n");
break;
case EINVAL:
printf("Invalid parameter to _stat.\n");
break;
default:
/* Should never be reached. */
printf("Unexpected error %d in _stat.\n", errno);
}
}
}
运行上面代码获取一个超过4G的文件返回值为132。开始百思不得其解,后来发现得用_stat64函数来代替stat函数。代码代码就是:
struct _stat64 buf;
int errno = _stat64 ("E:\\TestData\\1.tif ", &buf);
查了一个Windows API函数GetFileSize,发现这个函数获取的文件大小也得在DWORD范围:
GetFileSize Function
Retrieves the size of the specified file. The file size that can be reported by this function is limited to a DWORD value.