1.有没有copy文件夹的api
要求提供一个文件夹路径和目标路径,比如c:\windows
可以将其下的所有文件夹、文件夹下的文件都copy到目标路径下2.或是自己递归实现

解决方案 »

  1.   

    使用Win32 API函数
    ShFileOperation;  (文件操作函数)具体用法参见Win32 API例子如下Uses ShellAPI
    function Win_XCOPY(fFROM,fTO:String):boolean;
    var FData : TShFileOpStruct;
    begin
       Fdata.pFrom := PChar(fFrom);   //设立数据源路径和文件、目录名,支持(?, *通配符)
       fdata.pTo := PChar(fTo);       //设立目标路径
       fdata.wFunc := FO_COPY ;      //设立操作方式
                                     //FO_COPY 拷贝操作  相当于 XCOPY
                                     //FO_MOVE  移动操作  相当于 MOVE
                                     //FO_DELETE 删除操作 相当于 DELTREE
       FData.Wnd := application.Handle ;
       fData.lpszProgressTitle := 'Wait';  //设立提示窗标题
       fData.fFlags := FOF_ALLOWUNDO OR FOF_NOCONFIRMMKDIR;  //设定操作选项
       result:=ShFileOperation( FData ) = 0  ;
    end;
      

  2.   

    uses shellapi;
    {$R *.dfm}
    function   ClearDirectory(const   FromDirName:   string; const ToDirName: String;  const   IncludeSub,   ToRecyle:   Boolean):   Boolean;   stdcall;
    var
        fo:   SHFILEOPSTRUCT;
    begin
        FillChar(fo,   SizeOf(fo),   0);
        with   fo   do
        begin
            Wnd   :=   GetActiveWindow;
            wFunc   :=   FO_COPY;
            pFrom   :=   PChar(FromDirName   +   '\*.*'   +   #0);
            pTo   :=   PChar(ToDirName);
            fFlags   :=   FOF_SILENT   or   FOF_NOCONFIRMATION   or   FOF_NOERRORUI
                                or   (Ord(not   IncludeSub)   *   FOF_FILESONLY)
                                or   (ORd(ToRecyle)   or   FOF_ALLOWUNDO);
        end;
        Result   :=   (SHFileOperation(fo)   =   0);
    end ;
      

  3.   

    呵呵,我这里还有一个删除文件夹的
    function DelDirectory(const Dir:string): boolean;
    var
      fo:TSHFILEOPSTRUCT;
    begin
      FillChar(fo, SizeOf(fo), 0);
      with fo do
        begin
          Wnd := 0;
          wFunc := FO_DELETE;
          pFrom := PChar(dir+#0);
          pTo := #0#0;
          fFlags := FOF_NOCONFIRMATION+FOF_SILENT;
        end;
      Result:=(SHFileOperation(fo)=0);
    end;