您的位置:首页 > 其它

MFC,大文件(超过2G)获取文件大小的bug

2010-07-06 16:02 211 查看
今天在做大文件分割的时候,发现奇怪现象:

1.使用一个5K的文件测试分割成最大1K的文件时,能正常分割。

2.用一个2.2G的文件测试分割成最大2G的文件时,分割产生了7个2G的文件和一个小文件。

通过单步调试,发现在获取2.2G原文件大小时数据大小为17G多。

原产生错误的获取文件大小函数为:

Code:

ULONGLONG GetFileSize(LPCTSTR szFileName)

{

CFileStatus fs;

if (!CFile::GetStatus(szFileName,fs)) return 0;



return fs.m_size;

}



后修改为:

Code:

ULONGLONG GetFileSize(LPCTSTR szFileName)

{

CFileFind finder; //文件查找类

if(!finder.FindFile(szFileName)) return 0;

finder.FindNextFile();

ULONGLONG ul = finder.GetLength();

finder.Close();

return ul;

}



修改后分割功能正常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: