FileSize, в чем отличие от этой процедуры и что лучше использовать?

о получить размер файла, у меня есть две функции:

function GetFileSize1(const FileName: TFileName): Int64;
var
 iTmp: Int64;
 SearchRec: TSearchRec;
begin
  iTmp := -1;
  if FindFirst(FileName, faAnyFile, SearchRec) = 0 then
  begin
    iTmp := SearchRec.Size;
    System.SysUtils.FindClose(SearchRec);
  end;
  Result := iTmp;
end;

А также:

function GetFileSize2(const FileName: TFileName): Int64;
var
 FileStream: TFileStream;
begin
  FileStream := TFileStream.Create(FileName, fmOpenRead);
  try
    Result := FileStream.Size; 
  finally  
    FileStream.Free;
  end; 
end;

На практике, в чем разница? Оба, конечно, дают один и тот же результат, но что может быть более послушным, быстрым и безопасным? Или лучше, что предпочтительнее использовать? Первый или второй? Большое спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос