Информационный портал Media Systems & Bear Corp.

Главная Новости Delphi C&C++ Tеория Графов Web-Design Математика Исходники и Проекты Лисп и Пролог Ссылки

Портал :: Программирование под Дельфи
Как программно скопировать файл  

 

Существует несколько способов. Я приведу здесь самые быстрые из тех которыми я пользуюсь лично:

Старый добрый Паскалевый метод: Суть -  при помощи blockread читаем из файла блоки и перегоняем их в новый файл. Работает много быстрее , чем побитовое копирование.

procedure FileCopy(oldname,newname:string;canvas:TCanvas);

var
  OldF, NewF: file;
  NumRead, NumWritten: Integer;
  Buf: array[1..2048] of Char; //буффер

begin
    AssignFile(OldF, OldName);           { Open input file }
    Reset(FromF, 1);     { Record size = 1 //важно}
    AssignFile(NewF, NewName);       { Open output file }
    Rewrite(NewF, 1);  { Record size = 1 }
    Canvas.TextOut(10, 10, 'Copying ' + IntToStr(FileSize(FromF))+ ' bytes...');
      repeat
        BlockRead(OldF, Buf, SizeOf(Buf), NumRead);
        BlockWrite(NewF, Buf, NumRead, NumWritten);
      until (NumRead = 0) or (NumWritten <> NumRead);
        CloseFile(OldF);
        CloseFile(NewF);
end;

Естественно это не предел:
Копирование с помощью потоков:

Procedure FileCopy(Const OldName, NewName: String);

Var old,new: TFileStream; //Файловые потоки

Begin
old := TFileStream.Create(OldName, fmOpenRead );
try
  new := TFileStream.Create(NewName, fmOpenWrite or fmCreate);
  try
    new.CopyFrom(old, old.Size ) ;
    FileSetDate(new.Handle, FileGetDate(old.Handle));
  finally
   new.Free;
  end;
finally

  S.Free;
 end;
end;

Кроме того файл можно скопировать вызывая функции Windows:

Для этого необходимо подключить модуль ShellApi (не забудьте):

function FileCopy (OldFile, Dir : string) : boolean;
var File : TShFileOpStruct;

begin
 OldFile:=OldFile+#0;
Dir:=Dir+#0;
 File.Wnd := 0;
 File.wFunc := FO_COPY;
 File.pFrom:=pchar(OldFile);
  File.pTo:=pchar(Dir);
  File.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
  result:=ShFileOperation(File) = 0;
end;
Ну вот пожалуй и все , что касается копирования файлов 
          под Delphi

 

 
     
  Гостевая книга . Связь с разработчиками: Bear Corporation, Media Studio.  
  Это место для вашей рекламы  

Дизайн: Bear Corner, Inc. & Media Sudio.
Последнее обновление: 24.03.2001.

Rambler's Top100 Rambler's Top100
Hosted by uCoz