Советы по Delphi

         

Копирование файлов II


Как мне скопировать файл?

Вот три способа:

    {Данный способ использует файловый поток.}
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 FileCopy(const FromFile, ToFile: string);
var FromF, 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 } repeat BlockRead(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);                    { Открываем файл для чтения } try Rewrite(ToFile);                  { Создаем файл для записи } try { копируем файл, если возвращена отрицательная величина } { возбуждаем исключение } if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle) < 0 then raise EInOutError.Create('Ошибка использования LZCopy') finally CloseFile(ToFile);  { Закрываем ToFile } end; finally CloseFile(FromFile);  { Закрываем FromFile } end; end;

[000621]



Содержание раздела