要实现目录级的拷贝,可以利用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:\temp1目录下的所有文件复制到C:\temp2目录下 StrPCopy(frombuf,‘C:\temp1\*.*‘); //(\*.*)可去掉 StrPCopy(tobuf,‘C:\temp2‘); With OpStruc Do begin Wnd:=Handle; wFunc:=FO_COPY; pFrom:[email protected]; pTo:[email protected]; fFlags:=FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION; fAnyOperationsAborted:=false; hNameMappings:=Nil; lpszProgressTitle:=Nil; end; ShFileOperation(OpStruc); end; end. 通过本程序,可以将某一子目录及其下面的所有文件(包括下级子目录)拷贝到另一个子目录,如果目标目录不存在,则会自动创建它,从而实际一些自动备份的功能。
时间: 2024-10-24 15:21:18