我做的一个软件,在运行过程中,不断有数据通过FileWrite函数保存到一个文件(如Sample文件)里面,当执行到某个时段后,需要将Sample文件复制一份,形成另外一个文件Sample2文件,而软件运行如初,不断有数据通过FileWrite函数保存到Sample文件中.
请问在文件操作里面如何实现文件的复制,用什么函数????

解决方案 »

  1.   

    Procedure FileCopy( Const sourcefilename, targetfilename: String );
    Var
      S, T: TFileStream;
    Begin
      S := TFileStream.Create( sourcefilename, fmOpenRead );  try
        T := TFileStream.Create( targetfilename,
                                 fmOpenWrite or fmCreate );
        try
          T.CopyFrom(S, S.Size ) ;
        finally
          T.Free;
        end;
      finally
        S.Free;
      end;
    End;或者:procedure CopyFile(FromFileName, ToFileName: string);
    var
      FromFile, ToFile: File;
    begin
      AssignFile(FromFile, FromFileName); { Assign FromFile to FromFileName }  AssignFile(ToFile, ToFileName);     { Assign ToFile to ToFileName }
      Reset(FromFile);                    { Open file for input }
      try
        Rewrite(ToFile);                  { Create file for output }
        try
          { copy the file an if a negative value is returned }
          { raise an exception }
          if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle) < 0
            then
            raise EInOutError.Create('Error using LZCopy')
        finally
          CloseFile(ToFile);  { Close ToFile }    end;
      finally
        CloseFile(FromFile);  { Close FromFile }
      end;
    end;
      

  2.   

    通过CopyFile可以解决文件的复制问题,如以下语句:
      FileCLose(_fhUserData);
      CopyFile('C:\Line\temp.dat','C:\Line\temp2.dat' );
    但是由于temp文件在复制过程中关闭了,使软件运行过程中的新数据无法继续写入到temp文件中,请问如何解决这个问题?
    我使用了FileOpen('C:\Line\temp.dat' ,fmOpenRead);
    但是不行.