• 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.  
      
        通过本程序,可以将某一子目录及其下面的所有文件(包括下级子目录)拷贝到另一个子目录,如果目标目录不存在,则会自动创建它,从而实际一些自动备份的功能。  
       
    

      

  • 相关阅读:
    mysql保存中文乱码的原因和解决办法
    NetSetMan IP地址切换工具
    使用批处理文件,自动设置计算机IP地址
    神逸之作:国产快速启动软件神品ALTRun
    Apache详细介绍
    利用sqoop对mysql执行DML操作
    Mysql定时清空表
    azkaban group分组,权限
    azkaban使用
    sqoop无法导出parquet文件到mysql
  • 原文地址:https://www.cnblogs.com/qingsong/p/4033104.html
Copyright © 2020-2023  润新知