2010-07-02 3 views
0

나는 현재 안전한 삭제 알고리즘 및 물건을 가진 파일 삭제 도구를 다시 작성하고 있습니다. Wenn 디렉토리를 반복적으로 탐색하고 거기에있는 모든 파일과 모든 하위 디렉토리 등을 삭제하려고합니다. 디버거가 stackoverflow 예외를 throw합니다.C# Stackoverflow 재귀 디렉터리 삭제 작업

private void wipeFile(string file) 
    { 
     bool ret = false; 
     switch (m_algo) 
     { 
      case Algorithms.fastAlgo: 
       ret = FastWipe.WipeFile(file); 
       break; 
      case Algorithms.safeAlgo: 
       ret = CleanWipe.WipeFile(file, m_timesToWrite); 
       break; 
     } 
     handleFileWiped(file, DateTime.Now, ret); 
    } 

    /// <summary> 
    /// Wipes a directory recursively 
    /// </summary> 
    /// <param name="directory">Given subdir</param> 
    private void deepWipe(string directory) 
    { 
     foreach (string file in Directory.GetFiles(directory)) 
     { 
      wipeFile(file); 
     } 
     foreach (string subdir in Directory.GetDirectories(directory)) 
     { 
      deepWipe(directory); 
     } 
     try 
     { 
      Directory.Delete(directory); 
      handleDirectoryWiped(directory, DateTime.Now, true); 
     } 
     catch { handleDirectoryWiped(directory, DateTime.Now, false); } 
    } 

답변

3

변경이 :

foreach (string subdir in Directory.GetDirectories(directory)) 
{ 
    deepWipe(directory); 
} 

에 :

foreach (string subdir in Directory.GetDirectories(directory)) 
{ 
    deepWipe(subdir); 
} 
+0

+1 - 당신이 다시 날 잡았어! – womp

+0

@ n0pt3x : 환영합니다! StackOverflow에 오신 것을 환영합니다;) –