Unit1.pas
上传用户:psxgmh
上传日期:2013-04-08
资源大小:15112k
文件大小:2k
源码类别:

Delphi/CppBuilder

开发平台:

Delphi

  1. unit Unit1;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, lzExpand, StdCtrls;
  6. type
  7.   TForm1 = class(TForm)
  8.     Button1: TButton;
  9.     OpenDialog1: TOpenDialog;
  10.     SaveDialog1: TSaveDialog;
  11.     procedure Button1Click(Sender: TObject);
  12.   private
  13.     { Private declarations }
  14.   public
  15.     { Public declarations }
  16.   end;
  17. var
  18.   Form1: TForm1;
  19. implementation
  20. {$R *.dfm}
  21. //利用文件流拷贝文件
  22. procedure FileCopyA(const sourcefilename, targetfilename: string);
  23. var
  24.   S, T: TFileStream;
  25. begin
  26.   //创建源文件的文件流
  27.   S := TFileStream.Create(sourcefilename, fmOpenRead);
  28.   try
  29.     //创建目标文件的文件流
  30.     T := TFileStream.Create(targetfilename,
  31.       fmOpenWrite or fmCreate);
  32.     try
  33.       //将源文件流拷贝到目标文件流
  34.       T.CopyFrom(S, S.Size);
  35.     finally
  36.      //释放目标文件流
  37.       T.Free;
  38.     end;
  39.   finally
  40.     //释放源文件流
  41.     S.Free;
  42.   end;
  43. end;
  44. //利用内存块读写
  45. procedure FileCopyB(const FromFile, ToFile: string);
  46. var
  47.   FromF, ToF: file;
  48.   NumRead, NumWritten: integer;
  49.   Buf: array[1..2048] of Char;
  50. begin
  51.   //关联源文件
  52.   AssignFile(FromF, FromFile);
  53.   //打开文件,每次只读一个字节
  54.   Reset(FromF, 1);
  55.   //关联目标文件
  56.   AssignFile(ToF, ToFile);
  57.   //创建目标文件,并打开,每次只读一个字节
  58.   Rewrite(ToF, 1);
  59.   //循环读写
  60.   repeat
  61.     BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
  62.     BlockWrite(ToF, Buf, NumRead, NumWritten);
  63.   until (NumRead = 0) or (NumWritten <> NumRead);
  64.   //关闭源文件和目标文件
  65.   CloseFile(FromF);
  66.   CloseFile(ToF);
  67. end;
  68. //利用LZCopy函数实现 ,lzCopy函数在LZExpand单元里。
  69. procedure FileCopyC(FromFileName, ToFileName: string);
  70. var
  71.   FromFile, ToFile: file;
  72. begin
  73.   //关联源文件
  74.   AssignFile(FromFile, FromFileName);
  75.   //关联目标文件
  76.   AssignFile(ToFile, ToFileName);
  77.   //打开,源文件
  78.   Reset(FromFile);
  79.   try
  80.     //创建目标文件,并打开
  81.     Rewrite(ToFile);
  82.     try
  83.       //利用LZCopy函数拷贝文件
  84.       if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle) < 0 then
  85.         raise EInOutError.Create('Error using LZCopy')
  86.     finally
  87.       //关闭目标文件
  88.       CloseFile(ToFile);
  89.     end;
  90.   finally
  91.     //关闭源文件
  92.     CloseFile(FromFile);
  93.   end;
  94. end;
  95. procedure TForm1.Button1Click(Sender: TObject);
  96. begin
  97.   if OpenDialog1.Execute then
  98.   begin
  99.     if SaveDialog1.Execute then
  100.     begin
  101.       FileCopyC(openDialog1.FileName, SaveDialog1.FileName);
  102.     end;
  103.   end;
  104. end;
  105. end.