C++-FindFirstFile findnextfile 读取文件属性 并计算文件大小,为什么超过2G的文件大小就计算错误啊?

发布于 2017-02-11 03:45:58 字数 929 浏览 1323 评论 2

2013/03/22 08:22 -1218121728 bytes rhel-5.2-server-i386-dvd.iso
实际大小为2.86G
使用计算方法为

int list_current_dir( )
{
WIN32_FIND_DATA FileData;
HANDLE hSearch = NULL;

hSearch = FindFirstFile("c:\*", &FileData); // find for all files
if(hSearch == INVALID_HANDLE_VALUE)
return 0; // No file found

do
{
SYSTEMTIME systime;
FileTimeToSystemTime(&FileData.ftLastWriteTime,&systime);
unsigned __int64 filesize = FileData.nFileSizeHigh * 0ffffffff + FileData.nFileSizeLow;

printf("%04d/%02d/%02d %02d:%02d %l64u %sn", systime.wYear, systime.wMonth,systime.wDay,systime.wHour, systime.wMinute,filesize,FileData.cFileName);// print file name
}while(FindNextFile(hSearch,&FileData));// find next file

FindClose(hSearch); // finish searching
return 1;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瑾兮 2017-06-15 19:25:37

unsigned __int64 filesize = FileData.nFileSizeHigh * 0ffffffff + FileData.nFileSizeLow;
这句话有问题,改成这样试试:
uint64 ret = (((uint64)(FileData.nFileSizeHigh)) << 32) + (uint64)FileData.nFileSizeLow;

浮生未歇 2017-04-07 21:44:56

无代码,不真相,初测是否数组越界、未初始化等

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文