Pendekatan paling kanonik ketika ingin menghapus file selama durasi tertentu adalah dengan menggunakan LastWriteTime file (Terakhir kali file diubah):
Directory.GetFiles(dirName)
.Select(f => new FileInfo(f))
.Where(f => f.LastWriteTime < DateTime.Now.AddMonths(-3))
.ToList()
.ForEach(f => f.Delete());
(Di atas berdasarkan jawaban Uri tetapi dengan LastWriteTime
.)
Setiap kali Anda mendengar orang berbicara tentang menghapus file yang lebih lama dari kerangka waktu tertentu (yang merupakan aktivitas yang cukup umum), melakukannya berdasarkan LastModifiedTime file hampir selalu apa yang mereka cari.
Alternatifnya, untuk keadaan yang sangat tidak biasa Anda dapat menggunakan yang di bawah ini, tetapi gunakan ini dengan hati-hati karena disertai peringatan.
CreationTime
.Where(f => f.CreationTime < DateTime.Now.AddMonths(-3))
Waktu file dibuat di lokasi saat ini. Namun, berhati-hatilah jika file disalin, itu akan menjadi waktu yang disalin dan CreationTime
akan lebih baru dari file itu LastWriteTime
.
LastAccessTime
.Where(f => f.LastAccessTime < DateTime.Now.AddMonths(-3))
Jika Anda ingin menghapus file berdasarkan terakhir kali mereka dibaca, Anda dapat menggunakan ini, tetapi tidak ada jaminan akan diperbarui karena dapat dinonaktifkan di NTFS. Periksa fsutil behavior query DisableLastAccess
untuk melihat apakah sudah aktif. Juga di bawah NTFS mungkin membutuhkan waktu hingga satu jam untuk LastAccessTime file untuk memperbarui setelah itu diakses.