2010-07-02 20 views
0

Je suis actuellement en train de réécrire un outil de suppression de fichiers avec un algorithme de suppression en toute sécurité. Wenn J'essaie de parcourir un répertoire récursivement et d'y supprimer tous les fichiers et tous les sous-répertoires, etc. Le débogueur lancera une exception stackoverflow.C# Stackoverflow dans la suppression récursive de l'annuaire

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); } 
    } 

Répondre

3

Modifier ceci:

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

à:

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

+1 - tu me as à nouveau! – womp

+0

@ n0pt3x: De rien! Bienvenue dans StackOverflow;) –