2010-07-02 2 views
0

В настоящее время я переписываю инструмент удаления файлов с безопасным алгоритмом удаления и т. Д. Wenn Я пытаюсь регулярно просматривать каталог и удалять все файлы там и во всех поддирерах и т. Д. Отладчик будет генерировать исключение stackoverflow.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;) –

Смежные вопросы