使用Win API 获取文件大小(可获取正在使用的文件,包括独占方式打开的文件GetFileSize)
function GetSysFileSizeEx(AbsFileName:string):int64;
var
Handle: Windows.THandle;
FindData: Windows.TWin32FindData;
begin
Handle := Windows.FindFirstFile(PChar(AbsFileName), FindData);
if Handle <> INVALID_HANDLE_VALUE then
begin
Windows.FindClose(Handle);
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then //文件
begin
Result := INT64(FindData.nFileSizeHigh shl 32)+INT64(FindData.nFileSizeLow);
Exit;
end;
end;
Result := 0;
end;
另一个是小白的。
function GetFileSize(const fName: AnsiString): Int64;
var
hFile: THandle;
begin
hFile := _lopen(PAnsiChar(fName), OF_READ);
Result := FileSeek(hFile, Int64(0), 2);
_lclose(hFile);
end;