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;

相关阅读 >>

Delphi edit,memo中禁用ctrl+v

Delphi twebbrowser:确定带有框架的页面何时完成

Delphi 利用thttpclient实现http异步下载

Delphi 列举系统服务,停止启动所选服务

Delphi char string

Delphi topendialog设置多个过滤条件

Delphi开发的app如何调用外部app

Delphi package 把函数单元做成bpl调用

Delphi string.split 按照任意字符串分割语句

Delphi 清空dbgrd和stringgrid

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...