很少使用过超越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以上的文件大小所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)