Delphi拷贝目录(含子目录)的方法

要实现目录级的拷贝,可以利用Windows API函数ShFileOperation( ),其函数声明如下:  
  
WINSHELLAPI int WINAPI SHFileOperation(  
    LPSHFILEOPSTRUCT lpFileOp  
);  
  
实例:  
  
新建一个工程,其程序示例如下:  
  
unit Unit1;  
  
interface  
  
uses  
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
Dialogs, StdCtrls,ShellApi;  
//注意:必须引用ShellApi单元  
  
type  
TForm1 = class(TForm)  
Button1: TButton;  
procedure Button1Click(Sender: TObject);  
private  
{ Private declarations }  
public  
{ Public declarations }  
end;  
  
var  
Form1: TForm1;  
  
implementation  
  
{$R *.dfm}  
  
procedure TForm1.Button1Click(Sender:TObject);  
var  
OpStruc:TSHFileOpStruct;  
frombuf,tobuf:Array[0..128]of Char;  
begin  
FillChar(frombuf,Sizeof(frombuf),0);  
FillChar(tobuf,sizeof(tobuf),0);  
//假设将C:	emp1目录下的所有文件复制到C:	emp2目录下  
StrPCopy(frombuf,'C:	emp1*.*');    //(*.*)可去掉  
StrPCopy(tobuf,'C:	emp2');  
With OpStruc Do  
begin  
    Wnd:=Handle;  
    wFunc:=FO_COPY;  
    pFrom:=@frombuf;  
    pTo:=@tobuf;  
    fFlags:=FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;  
    fAnyOperationsAborted:=false;  
    hNameMappings:=Nil;  
    lpszProgressTitle:=Nil;  
end;  
ShFileOperation(OpStruc);  
end;  
  
end.  
  
    通过本程序,可以将某一子目录及其下面的所有文件(包括下级子目录)拷贝到另一个子目录,如果目标目录不存在,则会自动创建它,从而实际一些自动备份的功能。  
   

  

原文地址:https://www.cnblogs.com/qingsong/p/4033104.html