注册 登陆

delphi 复制目录 包括子目录

  1. function DoCopyDir(sDirName:String;sToDirName:String):Boolean; 
  2. var 
  3.  F: TSearchRec; 
  4.  //hFindFile:Cardinal; 
  5.  t,tfile:String; 
  6.  sCurDir:String[255]; 
  7.  FindFileData:WIN32_FIND_DATA; 
  8. begin 
  9.  //先保存当前目录 
  10.  sCurDir:=GetCurrentDir; 
  11.  ChDir(sDirName); 
  12.  F.FindHandle:=FindFirstFile('*.*',FindFileData); 
  13.  if F.FindHandle<>INVALID_HANDLE_VALUE then 
  14.  begin 
  15.   if not DirectoryExists(sToDirName) then //如果目录不存在 
  16.    ForceDirectories(sToDirName); //强迫建立目录 
  17.   repeat 
  18.    tfile:=FindFileData.cFileName; 
  19.    if (tfile='.'or (tfile='..'then 
  20.     Continue; //跳过两个目录标识 
  21.    if FindFileData.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY then 
  22.    begin 
  23.     t:=sToDirName+'\'+tfile; 
  24.     if not DirectoryExists(t) then 
  25.      ForceDirectories(t); 
  26.     if sDirName[Length(sDirName)]<>'\' then 
  27.      DoCopyDir(sDirName+'\'+tfile,t) 
  28.     else 
  29.      DoCopyDir(sDirName+tfile,sToDirName+tfile); 
  30.    end 
  31.    else 
  32.    begin 
  33.     t:=sToDirName+'\'+tFile; 
  34.     CopyFile(PChar(tfile),PChar(t),false); 
  35.    end
  36.   until FindNextFile(F.FindHandle,FindFileData)=false
  37.   FindClose(F); 
  38.  end 
  39.  else 
  40.  begin 
  41.   ChDir(sCurDir); 
  42.   result:=false
  43.   exit; 
  44.  end
  45.  //回到原来的目录下 
  46.  ChDir(sCurDir); 
  47.  result:=true
  48. end

 

« 上一篇 | 下一篇 »