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;


 

相关文章推荐

C++拷贝构造函数的几个细节

拷贝构造函数是C++最基础的概念之一,大家自认为对拷贝构造函数了解么?请大家先回答一下三个问题: 1. 以下函数哪个是拷贝构造函数,为什么? X::X(const X&);  ...

几个典型的内存拷贝及字符串函数实现

写一个函数,完成内存之间的拷贝。[考虑问题是否全面,是否考虑内存重叠问题] 返回void *支持链式操作,参数类型是void *以支持任意类型的指针,输入参数加上const修饰,最好加上asse...
  • wkq87
  • wkq87
  • 2011年08月15日 17:23
  • 800

C++中拷贝构造函数的几个细节问题

文章出自:http://grantren.iteye.com/blog/43289 拷贝构造函数是C++最基础的概念之一,大家自认为对拷贝构造函数了解么?请大家先回答一下三个问题: 1. 以下函数...
  • stawn
  • stawn
  • 2012年08月10日 15:55
  • 685

[转]Delphi 几个读写注册表的函数

转自: http://topic.csdn.net/t/20031117/10/2464684.html {*************************************...

Delphi,几个实用的HTML解析函数

1)HTML 标签值攫取函数,任意标签哦,纯字符串分析,可以配合IDHTTP编程 uses StrUtils; function ExtractHtmlTagValues(const Ht...

构造函数/拷贝构造函数/赋值运算符/移动构造函数/移动赋值运算符几个的区别与相似之处

构造函数:是类中用来声明初始化变量所用,在类定义的时候调用 拷贝构造函数:在用其他已定义对象定义新对象的时候调用拷贝构造函数 拷贝赋值运算符:在对象已经被初始化之后,再用其他已经定义的对象赋值就是...

文件夹拷贝

  • 2011年12月20日 16:17
  • 769B
  • 下载

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

要实现目录级的拷贝,可以利用Windows API函数ShFileOperation( ),其函数声明如下: WINSHELLAPI int WINAPI SHFileOperation( ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi中拷贝文件夹的几个函数
举报原因:
原因补充:

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