Feedback

C# - Leere Unterverzeichnisse löschen

Veröffentlicht von am 27.09.2017
(0 Bewertungen)
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);
            }
        }
Abgelegt unter Verzeichnis, Directory, löschen, delete.

2 Kommentare zum Snippet

Martin Dauskardt schrieb am 07.10.2017:
Recursiv geht oft mal schief.In diesem Fall wird ein Schreibfehler die Ausführung verhindern. Der Aufruf removeEmptySubdirectories(directory) zeigt ins Leere.
Patrick Semmler schrieb am 11.10.2017:
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 :-)
 

Logge dich ein, um hier zu kommentieren!