Feedback

Leere Unterverzeichnisse löschen

Sprache: C#

Löscht rekursiv leere Unterverzeichnisse in einer Verzeichnisstruktur.
public static void DeleteEmptySubdirectories(string path)
        {
            try
            {
                foreach (var directory in Directory.EnumerateDirectories(path))
                {
                    DeleteEmptySubdirectories(directory);
                }
                if (!Directory.EnumerateFileSystemEntries(path).Any())
                {
                        Directory.Delete(path);
                }
            }
            catch (Exception e)
            {
                throw new IOException($"Exception on deleting empty subdirectories in path '{path}'. See inner exception for details.", e);
            }
        }
public static void DeleteEmptySubdirectories(string path)
        {
            try
            {
                foreach (var directory in Directory.EnumerateDirectories(path))
                {
                    DeleteEmptySubdirectories(directory);
                }
                if (!Directory.EnumerateFileSystemEntries(path).Any())
                {
                        Directory.Delete(path);
                }
            }
            catch (Exception e)
            {
                throw new IOException($"Exception on deleting empty subdirectories in path '{path}'. See inner exception for details.", e);
            }
        }

2 Kommentare

  1. Ups, da hat der Fehlerteufel zugeschlagen. Beim Veröffentlichen des Snippets habe ich die Methode nochmal umbenannt, und dabei den rekursiven Aufruf vergessen. Sorry. Wird sofort korrigiert.
    Klar schlägt die Methode beim Aufruf fehl, falls es einen Schreibschutz gibt. Die Fehlerbehandlung hatte ich nicht mit berücksichtigt, da die Methode in einem Kontext bei mir eingesetzt wird, in dem es in der Regel zu keinem Schreibfehler kommt. Aber sicher, sauberer wäre es, die Exception zu fangen, eine neue Exception mit detaillierter Information zu werfen und die original Exception als InnerException mitzugeben. Ich habe das mal so angepasst.
    Für konstruktive Kritik bin ich selbstverständlich offen 🙂