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;
没有相关教程
|