读书人

GetFileSize获取文件大小异常

发布时间: 2012-07-31 12:33:47 作者: rapoo

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的数已经超过了有符号整数的范围了。

读书人网 >C++

热点推荐