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;
}
修改后分割功能正常。
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;
}
修改后分割功能正常。
相关文章推荐
- 获取文件大小,尤其是超过2G的大文件
- [代码]Delphi实现获取文件及文件夹大小(支持超过2G的大文件)
- MFC获取文件大小的方法
- MFC获取文件大小
- MFC获取文件大小的方法
- 【MFC】获取文件大小的方法
- MFC获取电脑文件夹下文件的名称,类型,大小,后缀(附源码)
- outlook Express 6邮件的文件大小超过2G时的办法
- WIN32_FIND_DATA 循环获取文件大小BUG
- mfc 获取文件大小
- tomcat上传超过限制文件大小报异常而不能正常转发的bug
- 【转】Java 获取文件大小所隐藏的BUG
- 解决TCP/UDP传输文件时不能超过2G大小的问题
- MFC获取文件大小方法
- MFC查找所有后缀文件获取文件大小读取特定位置数据
- 用MFC实现代码获取当前EXE 执行的绝对路径,用于扩展相对路径扩展,以及计算文件大小功能
- MFC获取文件夹下指定格式的文件并输出文件名及文件大小
- 关于获得文件超过2G,超过4G文件大小的方法
- 获取文件大小的六种方法大全,打开文件和不打开文件都有,C方法获取,C++方法获取,MFC方法获取。
- 获取远程下载文件的大小