首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

GetFileSize获取文件大小异常

2012-07-31 
GetFileSize获取文件大小错误获取小文件没错有一个7G的文件获取下来3个多G求解答[解决办法]32位字节变量错

GetFileSize获取文件大小错误
获取小文件没错
有一个7G的文件获取下来3个多G
求解答

[解决办法]
32位字节变量错误
你可以这样:

C/C++ code
__int64 GetFileSize(AnsiString Filename){  TStream *stm=0;  __int64 ret=-2;  if(!FileEixsts(Filename))return -1;  stm = new TFileStream(Filename,fmOpenRead);  if(stm){    ret = stm->Size();    delete stm;}  return ret;}
[解决办法]
GetFileSize还是能够取得大于2G的文件大小,如果文件大小大于2G, 大于2G的部分就放在*lpFileSizeHigh里面,注意查看MSDN帮助文档。
[解决办法]
两种方法获取4G以上的文件大小
C/C++ code
    ULARGE_INTEGER tInt1;    tInt1.LowPart = GetFileSize(tHandle, &tInt1.HighPart);    __int64 tFileSize1 = tInt1.QuadPart;        LARGE_INTEGER tInt2;    GetFileSizeEx(tHandle, &tInt2);    __int64 tFileSize2 = tInt2.QuadPart;
[解决办法]
DWORD的容量是4G

探讨

GetFileSize还是能够取得大于2G的文件大小,如果文件大小大于2G, 大于2G的部分就放在*lpFileSizeHigh里面,注意查看MSDN帮助文档。

[解决办法]
很明显大于2G的数已经超过了有符号整数的范围了。

热点排行