本文整理自网络,侵删。
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 twebbrowser:确定带有框架的页面何时完成
Delphi 利用thttpclient实现http异步下载
Delphi string.split 按照任意字符串分割语句
更多相关阅读请进入《Delphi》频道 >>