Копирование файлов 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]