很少使用过超越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); } ? (编辑:北几岛)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|