C++-FindFirstFile findnextfile 读取文件属性 并计算文件大小,为什么超过2G的文件大小就计算错误啊?
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
unsigned __int64 filesize = FileData.nFileSizeHigh * 0ffffffff + FileData.nFileSizeLow;
这句话有问题,改成这样试试:
uint64 ret = (((uint64)(FileData.nFileSizeHigh)) << 32) + (uint64)FileData.nFileSizeLow;
无代码,不真相,初测是否数组越界、未初始化等