获取大文件长度

feel_myself_is_lowB 2020-01-10 01:51:51
MFC中用了GetLength装不下,我应该怎样获取呢?
...全文
159 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

CFile srcFile(srcPathName,CFile::modeRead|CFile::typeBinary); //切割源文件

ULARGE_INTEGER tInt1;
tInt1.LowPart = GetFileSize((HANDLE)srcFile.m_hFile, &tInt1.HighPart);
int64 tFileSize1 = tInt1.QuadPart;

----------------------------------------------------------------
当时找到的办法 ,跟GetFileSizeEx差不多感觉
寻开心 2020-01-10
  • 打赏
  • 举报
回复
大于2GB,用GetFileEx可以
zgl7903 2020-01-10
  • 打赏
  • 举报
回复
smwhotjay 2020-01-10
  • 打赏
  • 举报
回复
__int64 get_file_size(const TCHAR * filename )
{
USES_CONVERSION;

//支持4g以上大文件 。
struct _stati64 buf;
// Check if statistics are valid: 正确——返回0 错误——返回-1,具体错误码保存在errno中

if( _stati64( W2A(filename) , &buf ) == -1 )
{
return -1;
}
return buf.st_size ;
}

  • 打赏
  • 举报
回复
引用 3 楼 寻开心 的回复:
ULONGLONG size;
CString strFilePath;
CFileStatus fileStatus;
if (CFile::GetStatus(strFilePath, fileStatus)) { size = fileStatus.m_size; }


当文件是几个G的时候运行会出错 错误类型是Debug ASSERT failed
我跟进了一下是if (CFile::GetStatus(strFilePath, fileStatus))这句话进去ASSERT(findFileData.nFileSizeHigh == 0)出错。。
请问下 这是为啥呢?看了半天没弄懂为啥。
寻开心 2020-01-10
  • 打赏
  • 举报
回复
ULONGLONG size;
CString strFilePath;
CFileStatus fileStatus;
if (CFile::GetStatus(strFilePath, fileStatus)) { size = fileStatus.m_size; }
  • 打赏
  • 举报
回复
我怎么连这个都不会啊。
  • 打赏
  • 举报
回复

64,678

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧