delphi 获取超GB大文件大小  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi 获取超GB大文件大小


function GetFileSizeByFileStream(const FileName:String):int64;
var
   FileStream:TFileStream;
begin
   Result:=0;
   FileStream:=TFileStream.Create(FileName,fmOpenRead,fmShareDenyNone);
   try
      Result:=FileStream.Size;
   finally
      FileStream.Free;
   end;
end;

 

function GetFileSizeByAPI(const FileName:String):int64;
var
   FileHandle:THandle;
   HIFileSize:DWORD;
   LOFileSize:DWORD;
begin
   Result:=0;
   FileHandle:=CreateFile(PChar(FileName),GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
   try
      LOFileSize:=GetFileSize(FileHandle,@HIFileSize);
      Result:=LOFileSize+HIFileSize*4294967296;
   finally
      CloseHandle(FileHandle);
   end;
end;

可以用下面的过程来测试:
procedure TestGetFileSize;
var
   FileStream:TFileStream;
Begin
   FileStream:=TFileStream.Create('d:\test.mem',fmCreate);
   try
      FileStream.Size:=16896666398;//大概是15.7GB
   finally
      FileStream.Free;
   end;
   ShowMessage('GetFileSizeByFileStream(''d:\test.mem'')='+IntToStr(GetFileSizeByFileStream('d:\test.mem')))
   ShowMessage('GetFileSizeByAPI(''d:\test.mem'')='+IntToStr(GetFileSizeByAPI('d:\test.mem')))
End;


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.046751976013184 seconds