加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

取得4G以上的文件大小

发布时间:2021-05-21 04:50:37 所属栏目:大数据 来源: https://www.jb51.cc
导读:很少使用过超越FAT32分区限制大小的文件,这不,需要在其他编程环境下取得大于4G的文件大小,查得函数dwSizeLow = GetFileSize((HANDLE)hFile,dwSizeHigh); 可以取得文件大小的高低位,组合成的LONGLONG型正是一个满足NTFS最大文件大小限制的类型。 写一个DL

很少使用过超越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);
}

?

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读