2012-06-06 11 views
-6

재귀를 사용하여 몇 가지 디렉토리에서 특정 .htm 파일을 모두 삭제하려고합니다. 지금까지 단 하나의 폴더로 잘 작동하지만 코드에 둘 이상의 폴더를 추가하는 방법을 찾지 못했습니다. 디렉토리 경로에 디렉토리를 추가 할 수있는 방법이 있습니까? 그래서 다른 디렉토리의 파일을 삭제할 때마다 코드를 변경하지 않아도됩니까?내 파일 삭제 프로그램에 디렉토리를 추가하려면 어떻게해야합니까?

namespace ConsoleApplication 
{ 
    class Deleter 
    { 
     static void Main(string[] args) 
     { 
      string directorypath = @"C:\Public\"; 
      string[] directories = System.IO.Directory.GetDirectories(directorypath); 
      DeleteDirectories(directories); 
     } 
     private static void DeleteDirectories(string[] directories) 
     { 
      foreach (string directory in directories) 
      { 
       string[] files = System.IO.Directory.GetFiles(directory, "*.htm"); 
       DeleteFiles(files); 
       directories = System.IO.Directory.GetDirectories(directory); 
       DeleteDirectories(directories); 
      } 
     } 
     private static void DeleteFiles(string[] files) 
     { 
      foreach (string file in files) 
      { 
       FileInfo f = new FileInfo(file); 
       if (f.CreationTime < DateTime.Now) 
        f.Delete(); 
      } 
     } 
    } 
} 
+0

어떤 특정 질문이 있습니까? – BrokenGlass

+0

"추가 디렉토리"는 더 많은 문맥이 없으면 상당히 의미가 없습니다. 어떤 디렉토리를 "추가"하고 싶습니까? – Oded

+0

실제로 삭제하고자하는 것에 대한 세부 정보를 조금 더 추가 할 수 있습니까? .htm 파일을 모두 지우려고하고 있습니까? – Chris

답변

1

오히려 그런 식으로 재귀 기대 하위 디렉토리 &에 열거 (디렉토리)를 설정하는 것보다, 새로운 참조를라는 이름의 하위 디렉토리를 만듭니다. 따라서 foreach 루프는 다음과 같습니다.

... 
foreach(var directory in directories) 
{ 
string[] files = System.IO.Directory.GetFiles(directory, "*.htm"); 
DeleteFiles(files); 
var subDirectories = System.IO.Directory.GetDirectories(directory); 
DeleteDirectories(directories); 
{ 
.... 
+0

응답 해 주셔서 감사합니다. 추가 하위 디렉토리는 어디에 포함시킬 수 있습니까? –

+0

이렇게하려면 asawyer의 조언을 따르고 Main 메서드에서 args 인수를 사용해야합니다. 그것은 커맨드 라인 인수가 전달 된 것이므로, cmd args로 정리하고자하는 모든 디렉토리를 나열하면됩니다. 기본적인 내용은 다음과 같습니다. http://msdn.microsoft.com/en-us/library/cb20e19t(v=vs.100).aspx – Chris

+0

계속 질문하는 것은 유감이지만, 좀 더 구체적으로, 나는 아직도 혼란 스럽다. –

관련 문제