Najbardziej kanonicznym podejściem, gdy chcesz usunąć pliki przez określony czas, jest użycie LastWriteTime pliku (ostatnia modyfikacja pliku):
Directory.GetFiles(dirName)
.Select(f => new FileInfo(f))
.Where(f => f.LastWriteTime < DateTime.Now.AddMonths(-3))
.ToList()
.ForEach(f => f.Delete());
(Powyższe oparte na odpowiedzi Uri, ale z LastWriteTime
.)
Ilekroć słyszysz, jak ludzie mówią o usuwaniu plików starszych niż określone ramy czasowe (co jest dość powszechną czynnością), robienie tego na podstawie LastModifiedTime pliku jest prawie zawsze tym, czego szukają.
Alternatywnie, w bardzo nietypowych okolicznościach możesz skorzystać z poniższych, ale używaj ich ostrożnie, ponieważ zawierają zastrzeżenia.
CreationTime
.Where(f => f.CreationTime < DateTime.Now.AddMonths(-3))
Czas utworzenia pliku w bieżącej lokalizacji. Uważaj jednak, jeśli plik został skopiowany, będzie to czas, w którym został skopiowany i CreationTime
będzie nowszy niż plik LastWriteTime
.
LastAccessTime
.Where(f => f.LastAccessTime < DateTime.Now.AddMonths(-3))
Jeśli chcesz usunąć pliki na podstawie ostatniego odczytu, możesz tego użyć, ale nie ma gwarancji, że zostanie zaktualizowany, ponieważ można go wyłączyć w systemie plików NTFS. Sprawdź, fsutil behavior query DisableLastAccess
czy jest włączony. Również w systemie NTFS może minąć nawet godzina, zanim plik LastAccessTime zostanie zaktualizowany po uzyskaniu do niego dostępu.