2013-03-22 2 views
-3

확장자가 .zzz 인 모든 파일을 찾은 다음 해당 파일의 상위 폴더 (모든 내용 포함)를 대상 디렉토리에 복사하고 싶습니다. 아래 코드는 작동하지만 하위 수준의 첫 번째 수준 만 복사합니다.모든 파일과 디렉토리를 반복적으로 복사

private void btn_submit_Click(object sender, EventArgs e) 
    { 
     string srcFolder = txt_src.Text; 
     string destFolder = txt_dest.Text; 
     foreach (string zzz in Directory.GetFiles(srcFolder, "*.zzz", SearchOption.AllDirectories)) 
     { 
      string modulePath = Directory.GetParent(zzz).FullName; 
      string moduleName = Directory.GetParent(zzz).Name; 
      Directory.CreateDirectory(destFolder + "\\" + moduleName); 
      foreach (string subFolders in Directory.GetDirectories(modulePath, "*", SearchOption.AllDirectories)) 
      { 
       Directory.CreateDirectory(subFolders.Replace(modulePath, destFolder + "\\" + moduleName)); 
      } 
      foreach (string allFiles in Directory.GetFiles(modulePath, "*.*", SearchOption.AllDirectories)) 
      { 
       File.Copy(allFiles, allFiles.Replace(modulePath, destFolder + "\\" + moduleName), true); 
      } 
     } 
    } 
+0

너무 많은이 온라인의 예뿐만 아니라 여기 SO''에 등이'SO posting' http://stackoverflow.com/questions/10389701/how-to-create-a에서 살펴보고있다 - 재귀 함수 - 모두 - 파일 및 폴더 복사 [MSDN 참조 CopyDirectory] (http://msdn.microsoft.com/en-us/library/bb762914.aspx) – MethodMan

+0

File.CopyTo (매개 변수 1, 매개 변수 2) <- 힌트 : 두 번째 것은 재귀 적입니다. – Greg

+0

이 질문은 주어진 디렉토리의 모든 파일을 나열하는 재귀 함수의 좋은 예입니다. 그것을 가지고 그것을 실행하십시오 : http://stackoverflow.com/questions/929276/how-to-recursively-list-all-the-files-in-a-directory-in-c – tnw

답변

3

재귀적일 수 있습니다. 나는 이걸 합친 것뿐입니다. 저는 변수를 완벽하게 분석하지는 못했지만 아이디어를 줄 것입니다.

private void btn_submit_Click(object sender, EventArgs e) 
{ 
    copy_stuff(txt_src.Text, txt_dest.Text); 
} 

private void copy_stuff(string srcFolder, string destFolder) 
{ 
    foreach (string zzz in Directory.GetFiles(srcFolder, "*.zzz", SearchOption.AllDirectories)) 
    { 
     string modulePath = Directory.GetParent(zzz).FullName; 
     string moduleName = Directory.GetParent(zzz).Name; 
     Directory.CreateDirectory(destFolder + "\\" + moduleName); 
     foreach (string subFolders in Directory.GetDirectories(modulePath, "*", SearchOption.AllDirectories)) 
     { 
      string dest = subFolders.Replace(modulePath, destFolder + "\\" + moduleName); 
      Directory.CreateDirectory(dest); 
      copy_stuff(subfolders, dest); 
     } 
     foreach (string allFiles in Directory.GetFiles(modulePath, "*.*", SearchOption.AllDirectories)) 
     { 
      File.Copy(allFiles, allFiles.Replace(modulePath, destFolder + "\\" + moduleName), true); 
     } 
    } 
} 
+0

고마워요! 나는 매우 가까이에 있었지만 모든 파일을 복사하는 것보다 전체 폴더 구조를 만들 수 있다고 생각하지 않았습니다. 잘 했어! –

관련 문제