Der kanonischste Ansatz beim Löschen von Dateien über einen bestimmten Zeitraum ist die Verwendung von LastWriteTime (das letzte Mal, als die Datei geändert wurde):
Directory.GetFiles(dirName)
.Select(f => new FileInfo(f))
.Where(f => f.LastWriteTime < DateTime.Now.AddMonths(-3))
.ToList()
.ForEach(f => f.Delete());
(Das obige basiert auf Uris Antwort, aber mit LastWriteTime
.)
Wenn Sie Leute über das Löschen von Dateien sprechen hören, die älter als ein bestimmter Zeitraum sind (was eine ziemlich häufige Aktivität ist), ist es fast immer das, wonach sie suchen, wenn sie auf der LastModifiedTime der Datei basieren.
Alternativ können Sie unter sehr ungewöhnlichen Umständen die folgenden Optionen verwenden. Verwenden Sie diese jedoch mit Vorsicht, da sie mit Einschränkungen verbunden sind.
CreationTime
.Where(f => f.CreationTime < DateTime.Now.AddMonths(-3))
Die Zeit, zu der die Datei am aktuellen Speicherort erstellt wurde. Seien Sie jedoch vorsichtig, wenn die Datei kopiert wurde. Dies ist die Zeit, zu der sie kopiert wurde, und CreationTime
sie ist neuer als die Datei LastWriteTime
.
LastAccessTime
.Where(f => f.LastAccessTime < DateTime.Now.AddMonths(-3))
Wenn Sie die Dateien basierend auf dem letzten Lesevorgang löschen möchten, können Sie dies verwenden. Es gibt jedoch keine Garantie dafür, dass sie aktualisiert werden, da sie in NTFS deaktiviert werden können. Überprüfen Sie fsutil behavior query DisableLastAccess
, ob es eingeschaltet ist. Auch unter NTFS kann es bis zu einer Stunde dauern, bis die LastAccessTime der Datei nach dem Zugriff aktualisiert wird.