Копирование файлов II
Как мне скопировать файл?
Вот три способа:
{Данный способ использует файловый поток.} Procedure FileCopy( Const sourcefilename, targetfilename: String ); Var S, T: TFileStream;Begin S := TFileStream.Create( sourcefilename, fmOpenRead );tryT := TFileStream.Create( targetfilename,fmOpenWrite or fmCreate );tryT.CopyFrom(S, S.Size ) ;finallyT.Free;end;finallyS.Free;end;End; {Данный способ для чтения/записи использует блоки памяти.} procedure FileCopy(const FromFile, ToFile: string); varFromF, ToF: file;NumRead, NumWritten: Word;Buf: array[1..2048] of Char;begin AssignFile(FromF, FromFile);Reset(FromF, 1); { Размер записи = 1 }AssignFile(ToF, ToFile); { Открываем выходной файл }Rewrite(ToF, 1); { Размер записи = 1 }repeatBlockRead(FromF, Buf, SizeOf(Buf), NumRead);BlockWrite(ToF, Buf, NumRead, NumWritten);until (NumRead = 0) or (NumWritten <> NumRead);ClloseFile(FromF);CloseFile(ToF);end; {Данный способ использует LZCopy, добавьте в список USES модуль LZExpand.} procedure CopyFile(FromFileName, ToFileName: string); var FromFile, ToFile: File;begin AssignFile(FromFile, FromFileName); { Присваиваем FromFile FromFileName }AssignFile(ToFile, ToFileName); { Присваиваем ToFile ToFileName }Reset(FromFile); { Открываем файл для чтения }tryRewrite(ToFile); { Создаем файл для записи }try{ копируем файл, если возвращена отрицательная величина }{ возбуждаем исключение }if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle) < 0thenraise EInOutError.Create('Ошибка использования LZCopy')finallyCloseFile(ToFile); { Закрываем ToFile }end;finallyCloseFile(FromFile); { Закрываем FromFile }end;end; |
[000621]