Delphi中拷贝文件夹的几个函数

原创 2007年09月18日 15:50:00

 思路1:直接使用CopyFile,循环查找文件夹下文件,拷贝到指定目录,(这里测试,不含子目录)

procedure CopyDirectory(SourceDir, DesDir: string);
var
    DirInfo: TSearchRec;
    r: Integer;
begin
    r := FindFirst(SourceDir + '*.*', FaAnyFile, DirInfo);
    while r = 0 do
    begin
        if ((DirInfo.Attr and FaDirectory <> FaDirectory) and
            (DirInfo.Attr and FaVolumeId <> FaVolumeID)) then
            CopyFile(pchar(SourceDir + DirInfo.Name), pchar(DesDir + DirInfo.Name), True);
        r := FindNext(DirInfo);
    end;
    SysUtils.FindClose(DirInfo);
end;
如果想含有子目录,加一递归即可.
思路2:使用API,TSHFileOpStruct 结构.含有子目录.
procedure CopyFileByFolder(Ahandle: THandle; fromDir,
  toDir: String);
var
  SHFileOpStruct: TSHFileOpStruct;
  pFromDir, pToDir: PAnsiChar;
begin
  GetMem(pFromDir, Length(fromDir)+2);
  try
    GetMem(pToDir, Length(toDir)+2);
    try

      FillChar(pFromDir^, Length(fromDir)+2, 0);
      FillChar(pToDir^, Length(toDir)+2, 0);

      StrCopy(pFromDir, PChar(fromDir));
      StrCopy(pToDir, PChar(toDir));

      with SHFileOpStruct do
      begin
        Wnd    := AHandle;   // Assign the window handle
        wFunc  := FO_COPY;  // Specify a file copy
        pFrom  := pFromDir;
        pTo    := pToDir;
        fFlags := FOF_NOCONFIRMATION or FOF_SILENT;
        fAnyOperationsAborted := True;
        hNameMappings := nil;
        lpszProgressTitle := nil;
        if SHFileOperation(SHFileOpStruct) <> 0 then
          RaiseLastWin32Error;
      end;
    finally
      FreeMem(pToDir, Length(ToDir)+2);
    end;
  finally
    FreeMem(pFromDir, Length(FromDir)+2);
  end;
end;


 

delphi 复制文件夹的函数

 procedure   ShellCopy(const   dir1:string;   const   dir2:string);   /////格式shellcopy(d:/1/*.*,e:/1...
  • 79720699
  • 79720699
  • 2007年10月05日 11:41
  • 2188

Delphi中实现文件拷贝的三种方法 (收藏)

1.利用Windows API:CopyFile(lpExistingFileName, lpNewFileName: PChar; bFailIfExists: BOOL): BOOL proced...
  • chinmusam
  • chinmusam
  • 2010年12月19日 02:58
  • 1096

delphi 网络文件拷贝 (参考)

  如何模拟输入用户名、密码来访问网络邻居 收藏新一篇: 有关socket确认连接 | 旧一篇: 局域网内传文件或文件内容function StorePage(){d=document;t=d.sel...
  • happypolo
  • happypolo
  • 2008年12月20日 23:15
  • 2178

Delphi创建文件夹

//创建单个文件夹uses Windows;CreateDirectory(C:/abc, nil);//创建多级文件夹uses FileCtrl;ForceDirectories(C:/abc/1/...
  • qiume
  • qiume
  • 2009年02月24日 10:47
  • 3778

BCB 文件夹copy函数(包括文件夹下所有文件和子文件夹)

void CopyFolder(AnsiString srcPath, AnsiString aimPath){ TSearchRec sr; if (!Directory...
  • xu_yong_gang
  • xu_yong_gang
  • 2009年02月05日 13:56
  • 3010

复制图像,类似Bitblt函数的复制。

实现将图像复制到另外一个图像的指定位置上去。类似于Bitblt函数。 用OpenCV函数,则需要下面这样做: #include "cv.h" #include "highgui.h" int mai...
  • aa512690069
  • aa512690069
  • 2013年07月07日 11:13
  • 893

vc++ 拷贝文件夹

BOOL CUpdateMiDlg::CopyDirectory(CString SrcDirectry, CString DstDirectory) { CreateDirector...
  • lcalqf
  • lcalqf
  • 2014年11月26日 16:32
  • 4736

多线程递归拷贝多层目录文件

多线程递归拷贝多层目录文件,
  • coder_fkr
  • coder_fkr
  • 2016年05月20日 18:56
  • 815

DELPHI--查找目录下所有文件

在站点收入了一篇文章: http://hi.baidu.com/nianxiaoyou/blog/item/de4b79faad71378c9f514669.html 其中第三个内容是实现: ...
  • penjie0418
  • penjie0418
  • 2012年01月17日 21:11
  • 1261

内存拷贝函数memcpy函数深入剖析

memcpy(拷贝内存内容)   定义函数:void * memcpy( void * dest, const void *src, size_t n ); memcpy()用来拷贝src所指的内存内...
  • u014744118
  • u014744118
  • 2016年09月25日 00:31
  • 3866
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi中拷贝文件夹的几个函数
举报原因:
原因补充:

(最多只允许输入30个字)