2008年10月9日星期四

Delphi中实现文件拷贝的三种方法

1.调用API函数
procedure CopyFile(FromFileName,ToFileName:string);
var
  f1,f2:file;
Begin
  AssignFile(f1,FromFileName); //指定源文件名
  AssignFile(f2,ToFileName); //指定目标文件名
  Reset(f1);
  Try
    Rewrite(f2);
    Try
      If Lzcopy(TfileRec(f1).handle,TfileRec(f2).Handle)<0 Then
         Raise EinoutError.creat('文件复制错误')
    Finally
      CloseFile(f2); //关闭 f2
    End;
  Finally
    Until length(sLine)<=0;
  End;
End;
2.文件流
procedure copyfile;
var f1,f2: tfilestream ;
begin
  f1:=Tfilestream.Create(sourcefilename,fmopenread);
  try
    f2:=Tfilestream.Create(targetfilename,fmopenwrite or fmcreate);
    try
      f2.CopyFrom(f1,f1.size);
    finally
      f2.Free;
    end;
  finally
    f1.Free;
  end;
end;

3.利用内存块读写buffer实现
Procudure FileCopy(const Fromfile,Tofile:string);
Var
  F1,F2:file;
  NumRead,Numwritten:word;
  Buf:array [1..2048] of char;
Begin
  AssignFile(F1,Fromfile);
  Reset(F1,1);
  AssignFile(F2,Tofile);
  Rewrite(F2,1);
  Repeat
    BlockRead(F1,buf,sizeof(buf),NumRead);
    BlockWrite(F2,buf,Numread,NumWritten);
  Until (NumRead=0) or (NumWritten<>NumRead);
  CloseFile(F1);
  CloseFile(F2);
End;




[广告] 特惠尝必胜客26道新品

没有评论: