取得4G以上的文件大小

取得4G以上的文件大小,第1张

概述很少使用过超越FAT32分区限制大小的文件,这不,需要在其他编程环境下取得大于4G的文件大小,查得函数dwSizeLow = GetFileSize((HANDLE)hFile, &dwSizeHigh); 可以取得文件大小的高低位,组合成的LONGLONG型正是一个满足NTFS最大文件大小限制的类型。写一个DLL,只有一个导出函数:extern "C" __declspec(dllexpor

很少使用过超越fat32分区限制大小的文件,这不,需要在其他编程环境下取得大于4G的文件大小,查得函数DWSizeLow = GetfileSize((HANDLE)hfile,&DWSizeHigh); 可以取得文件大小的高低位,组合成的LONGLONG型正是一个满足NTFS最大文件大小限制的类型。
写一个DLL,只有一个导出函数:

extern "C" __declspec(dllexport) voID Get_fileSize(LPCTSTR strfilename,LPSTR strfileSize/*返回文件大小的字符串型*/)
{
//打开文件以便取得文件大小
 OFSTRUCT of;
 DWORD DWSizeLow,DWSizeHigh,DWError;  //低位,高位,错误代码
 Hfile hfile=Openfile(strfilename,&of,OF_READ);
 try
 { 
  DWSizeLow = GetfileSize((HANDLE)hfile,&DWSizeHigh);  //就是他了
  // 若失败,返回 -1
  if (DWSizeLow == 0xFFFFFFFF && (DWError = GetLastError()) != NO_ERROR ){
 
        strcpy(strfileSize,"-1");
   }
  else
  {
   LONGLONG llSize,llPow;
   llPow=4294967296; //(LONGLONG)pow(2,32);
   llSize=DWSizeHigh*llPow+DWSizeLow; //可能是大于4G的怪物

   sprintf(strfileSize,"%I64u",llSize);
   }
 }
 catch(...)
 {
  strcpy(strfileSize,"-1");
  }
 if(hfile)CloseHandle((HANDLE)hfile);
}

  总结

以上是内存溢出为你收集整理的取得4G以上的文件大小全部内容,希望文章能够帮你解决取得4G以上的文件大小所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1156459.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存