在delphi中拷贝整个文件夹怎么操作

 我来答
windblast
2016-11-10 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13617
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部

有以下办法复制整个文件夹


1、使用  winexec 调用 xcopy 命令行


winexec( 'xcopy d:\test e:\ /s/e', false);


2、调用 winAPI 函数:


function CopyDir(const SourceDir,DestDir: string): Boolean;
var
   lpFileOp: TSHFileOpStruct;
begin
  with lpFileOp do
  begin
    Wnd    := Application.Handle;
    wfunc  := FO_COPY;
    pFrom  := pchar(SourceDir);
    pTo    := pchar(DestDir);
    fFlags := FOF_ALLOWUNDO;
    
    hNameMappings         := nil;
    lpszProgressTitle     := nil;
    fAnyOperationsAborted := false;
  end;
  Result := SHFileOperation(lpFileOp) = 0
end;


3、使用 delphi 文件函数编写:

function DoCopyDir(sDirName:String;sToDirName:String):Boolean;
var
  hFindFile:Cardinal;
  t,tfile:String;
  sCurDir:String[255];
  FindFileData:WIN32_FIND_DATA;
begin
  //记录当前目录
  sCurDir:=GetCurrentDir;
  ChDir(sDirName);
  hFindFile:=FindFirstFile('*.*',FindFileData);
  if  hFindFile<>INVALID_HANDLE_VALUE   then
  begin
    if not DirectoryExists(sToDirName)   then
      ForceDirectories(sToDirName);
      repeat
        tfile:=FindFileData.cFileName;
        if  (tfile='.') or (tfile='..')  then
          Continue;
        if   FindFileData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY   then
        begin
          t:=sToDirName+'\'+tfile;
          if not DirectoryExists(t)  then
            ForceDirectories(t);
          if  sDirName[Length(sDirName)]<>'\'   then
            DoCopyDir(sDirName+'\'+tfile,t)
          else
            DoCopyDir(sDirName+tfile,sToDirName+tfile);
        end
        else
        begin
          t:=sToDirName+'\'+tFile;
          CopyFile(PChar(tfile),PChar(t),True);
        end;
      until   FindNextFile(hFindFile,FindFileData)=false;
              ///     FindClose(hFindFile);
  end
  else
  begin
    ChDir(sCurDir);
    result:=false;
    exit;
  end;
        //回到当前目录
  ChDir(sCurDir);
  result:=true;
end;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式