现在的位置: 首页 > 综合 > 正文

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

2012年11月04日 ⁄ 综合 ⁄ 共 563字 ⁄ 字号 评论关闭

    今天在做大文件分割的时候,发现奇怪现象:

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

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

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

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

Code:
  1. ULONGLONG GetFileSize(LPCTSTR szFileName)   
  2. {   
  3.     CFileStatus fs;   
  4.     if (!CFile::GetStatus(szFileName,fs)) return 0;   
  5.        
  6.     return fs.m_size;   
  7. }  

 

后修改为:

Code:
  1. ULONGLONG GetFileSize(LPCTSTR szFileName)   
  2. {   
  3.     CFileFind finder; //文件查找类   
  4.     if(!finder.FindFile(szFileName))  return 0;    
  5.     finder.FindNextFile();     
  6.     ULONGLONG ul = finder.GetLength();   
  7.     finder.Close();   
  8.     return ul;   
  9. }  

 

修改后分割功能正常。

抱歉!评论已关闭.