C# Ordner nach x Tagen löschen?
Hallo,
ich möchte gerne in einem Ordner die Ordner Löschen die Älter als x Tage sind. Dies bitte in C#. Bitte nicht den ganzen Code sondern nur die schleife oder Befehle die ich dafür benötige. Geschafft habe ich es schon mit normalen Dein aber nicht mit einem Ordner. Mit normalen Dateien(z.b. .txt Datei) habe ich es mit "GetFiles" und "FileInfo" gelöst wie aber mit einem Ordner??
Gruß
Dennis
3 Antworten
Eine der "einfachsten" Möglichkeiten ist die:
- Lege ein Objekt von System.Collections.Generic.Stack<System.IO.DirectoryInfo> an und füge das Startverzeichnis der Operation hinzu.
- Nimm eine while-Schleife, in deren Bedingung überprüft wird, ob das Stack-Objekt > 0 Elemente hat.
- Nimm das oberste Element vom Stack und lass dir mittels der Methode System.IO.DirectoryInfo.GetDirectories() die Unterverzeichnisse auflisten.
- Überprüfe nun für jedes Unterverzeichnis, ob es älter als 8 Tage ist. (Verwende dazu die Eigenschaft System.IO.DirectoryInfo.CreationTime; kleiner Tipp: System.DateTime - System.DateTime = System.TimeSpan)
- Wenn das Verzeichnis älter als 8 Tage ist, verwende die Methode System.IO.DirectoryInfo.Delete(bool recursive) mit dem Parameter true um das Verzeichnis rekursiv zu löschen.
- Ansonsten pack das Unterverzeichnis auf den Stack.
Anmerkung: Achte darauf, die ggf. auftretenden Exceptions korrekt zu handlen. (System.UnauthorizedAccessException, System.IO.DirectoryNotFoundException und System.IO.IOException)
P.S.: Du wolltest zwar nicht den ganzen Code, aber für den Fall, dass du deine Meinung diesbezüglich mal ändern solltest, folge einfach diesem Link: https://pastebin.com/K6kT3s4g ^^
Dann lies nochmal Punkt 5. ^^
Alternativ kannst du dir auch eine eigene Methode (wahlweise rekursiv oder iterativ) basteln um einen kompletten Verzeichnisbaum zu löschen.
Cc cleaner kann als tool direkt auf c zugreifen ganz einfach und hast dazu noch ein gutes Reinigungs tool
Warum genau muss es hier eigentlich (fast) immer einen geben, der die Frage nicht ließt und dann auch noch eine völlig an der Frage vorbeigehende "Antwort" gibt?!
-.-
In C# gibt es die Directory und DirectoryInfo Klasse. Diese zielen auf Ordner, statt auf Dateien.
Womöglich musst du aber über die Directory Klasse alle Dateien in Schleife löschen und dann erst die Ordner.
hallo ich habe es soweit jetzt hinbekommen. Problem ist jetzt, dass das Programm nicht damit klar kommt das der Ordner nicht leer ist..