Dosyaları belirli bir süre boyunca silmek istediğinizde en kanonik yaklaşım, dosyanın LastWriteTime (dosyanın en son değiştirildiği zaman) kullanmaktır:
Directory.GetFiles(dirName)
.Select(f => new FileInfo(f))
.Where(f => f.LastWriteTime < DateTime.Now.AddMonths(-3))
.ToList()
.ForEach(f => f.Delete());
(Yukarıdakiler Uri'nin cevabına dayanmaktadır, ancak ile LastWriteTime
.)
İnsanların belirli bir zaman diliminden daha eski dosyaları silmekten bahsettiklerini duyduğunuzda (ki bu oldukça yaygın bir etkinliktir), bunu dosyanın LastModifiedTime temelinde yapmak neredeyse her zaman aradıkları şeydir.
Alternatif olarak, çok sıra dışı durumlar için aşağıdakileri kullanabilirsiniz, ancak uyarılarla birlikte geldiklerinden bunları dikkatli kullanın.
CreationTime
.Where(f => f.CreationTime < DateTime.Now.AddMonths(-3))
Dosyanın mevcut konumda oluşturulduğu saat. Ancak, dosya kopyalandıysa dikkatli olun, kopyalandığı zaman CreationTime
olacak ve dosyadan daha yeni olacaktır LastWriteTime
.
LastAccessTime
.Where(f => f.LastAccessTime < DateTime.Now.AddMonths(-3))
Dosyaları en son okundukları zamana göre silmek isterseniz bunu kullanabilirsiniz, ancak NTFS'de devre dışı bırakılabileceği için güncelleneceğine dair bir garanti yoktur. Açık fsutil behavior query DisableLastAccess
olup olmadığını kontrol edin . Ayrıca NTFS altında, dosyaya erişildikten sonra LastAccessTime'ın güncellenmesi bir saat kadar sürebilir.