如何测试文件是否为空

时间:2015-05-12 06:14:41

标签: delphi

我想检查文件是否存在以及是否存在是否为空。

我可以处理文件存在;

if FileExists(fileName) then

else
   ShowMessage('File Not Exists');

如何测试空文件?

3 个答案:

答案 0 :(得分:6)

正如@TLama建议的那样,如果找到文件并且大小为零,则以下函数返回true。

function FileIsEmpty(const FileName: String): Boolean;
var
  fad: TWin32FileAttributeData;
begin
  Result := GetFileAttributesEx(PChar(FileName), GetFileExInfoStandard, @fad) and
            (fad.nFileSizeLow = 0) and (fad.nFileSizeHigh = 0);
end;

答案 1 :(得分:4)

测试文件大小等于零。要查看如何查找文件大小,请参阅此问题:Getting size of a file in Delphi 2010 or later?

答案 2 :(得分:0)

var
  sr: TSearchRec;
begin
  if FindFirst('filename', faAnyFile, sr) = 0 then // If file exists ...
  try
    Result.size := sr.Size; // Check here is sr.Size = 0
    Result.date := FileDateToDateTime(sr.Time);
  finally
    FindClose(sr);
  end;
end;

更新:作为更明确的答案,有完整的功能:

function FileExistsAndEmpty(const AFileName: string): Boolean;
var
  sr: TSearchRec;
begin
  Result := FindFirst(AFileName, faAnyFile, sr) = 0;
  if Result then begin // file exists ...
    Result := sr.Size = 0;
    FindClose(sr);
  end;
end;