一个文件操作问题,我通过Copy一个文件,但是我想知道这个文件的大小,怎么办???
如:FileCLose(_fhUserData);
    CopyFile('C:\Line\temp.dat','C:\Line\temp2.dat' );
但是我想知道拷贝文件的大小,我用FileSize(_fhUserData),但是不行,该怎么办??

解决方案 »

  1.   

    var zz:twin32finddata;
    h:=windows.FindFirstFile(pchar('d:\123.dbf'),zz);
    if h<>invalid_handle_value then
    begin
    showmessage(inttostr(zz.nFileSizeLow)+'kb:');
    end;
      

  2.   

    试试这个:
    function FSize(FileName: string): LongInt;
    var
      F: File;
    begin
      AssignFile(F, FileName);
      reset(F,1);
      Result := FileSize(F);
      CloseFile(F);
    end;
      

  3.   

    //这是取目录大小,对你应该有帮助function  TForBackUp.GetDirectorySize(Path :String): Integer;
    var
      SR: TSearchRec;
    begin
      Result := 0;
      if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
      begin
        if (sr.Name <> '.') and (sr.Name <> '..') and (sr.Attr = faDirectory) then
          Result := Result + GetDirectorySize(Path+Sr.Name+'\')
        else
          Result := Result + Sr.Size;
        while FindNext(sr) = 0 do
          if (sr.Name <> '.') and (sr.Name <> '..') and (sr.Attr = faDirectory) then
            Result := Result + GetdirectorySize(Path+Sr.Name+'\')
          else
            Result := Result + Sr.Size;    FindClose(sr);
      end;
    end;
      

  4.   

    看看我的方法:
    var
      f:TFileStream;
      iFileSize:integer;
    begin
      f:=TFileStream.Create('c:\test.dat',fmOpenRead);
      iFileSize:=f.Size;
      f.Free;
    end;
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      F : Cardinal;
      d : DWORD;
    begin
      F := CreateFile('C:\aa.txt',0,FILE_SHARE_READ, 0,OPEN_ALWAYS ,FILE_ATTRIBUTE_NORMAL ,0);
      if F <> INVALID_HANDLE_VALUE then
      begin
        D := GetFileSize(F, nil);
        showmessage(floattostr(d) + 'Byte');
      end;
    end;