jpf*_*ius 29 delphi file delphi-2010
Delphi 2010有一套很好的新文件访问功能IOUtils.pas(我特别喜欢与日期相关的函数的UTC版本).到目前为止我想念的是类似的东西
TFile.GetSize (const Path : String)
Run Code Online (Sandbox Code Playgroud)
什么是Delphi 2010-获取文件大小的方法?我是否必须返回并使用FindFirst访问TSearchRec.FindData?
谢谢.
Del*_*ics 49
我不确定是否有"Delphi 2010"方式,但有一种Windows方式不涉及FindFirst和所有爵士乐.
我把这个例程的Delphi转换(并在此过程中修改它以处理> 4GB大小的文件,如果你需要).
uses
WinApi.Windows;
function FileSize(const aFilename: String): Int64;
var
info: TWin32FileAttributeData;
begin
result := -1;
if NOT GetFileAttributesEx(PWideChar(aFileName), GetFileExInfoStandard, @info) then
EXIT;
result := Int64(info.nFileSizeLow) or Int64(info.nFileSizeHigh shl 32);
end;
Run Code Online (Sandbox Code Playgroud)
实际上你可以只使用GetFileSize(),但这需要一个文件HANDLE,而不仅仅是文件名,并且类似于GetCompressedFileSize()建议,这需要两个变量来调用.无论GetFileSize()和GetCompressedFileSize()重载其返回值,所以测试成功,并确保有效的结果是,只是有点更加尴尬.
GetFileSize Ex()避免了处理> 4GB文件大小和检测有效结果的细节,但也需要文件HANDLE而不是名称,并且(至少Delphi 2009,我没有检查过2010)不是在任何地方为你在VCL宣布,你必须提供自己的进口声明.
使用Indy单位:
uses IdGlobalProtocols;
function FileSizeByName(const AFilename: TIdFileName): Int64;
Run Code Online (Sandbox Code Playgroud)