Cách tiếp cận kinh điển nhất khi muốn xóa các tệp trong một khoảng thời gian nhất định là sử dụng LastWriteTime của tệp (Lần cuối cùng tệp được sửa đổi):
Directory.GetFiles(dirName)
.Select(f => new FileInfo(f))
.Where(f => f.LastWriteTime < DateTime.Now.AddMonths(-3))
.ToList()
.ForEach(f => f.Delete());
(Trên đây dựa trên câu trả lời của Uri nhưng với LastWriteTime
.)
Bất cứ khi nào bạn nghe thấy mọi người nói về việc xóa các tệp cũ hơn một khung thời gian nhất định (là một hoạt động khá phổ biến), thì việc thực hiện dựa trên LastModifiedTime của tệp hầu như luôn luôn là những gì họ đang tìm kiếm.
Ngoài ra, đối với những trường hợp rất bất thường, bạn có thể sử dụng những điều dưới đây, nhưng hãy cẩn thận khi sử dụng chúng.
CreationTime
.Where(f => f.CreationTime < DateTime.Now.AddMonths(-3))
Thời gian tập tin được tạo ở vị trí hiện tại. Tuy nhiên, hãy cẩn thận nếu tệp được sao chép, đó sẽ là thời gian nó được sao chép và CreationTime
sẽ mới hơn tệp LastWriteTime
.
LastAccessTime
.Where(f => f.LastAccessTime < DateTime.Now.AddMonths(-3))
Nếu bạn muốn xóa các tệp dựa trên lần đọc cuối cùng, bạn có thể sử dụng tệp này, nhưng không có gì đảm bảo nó sẽ được cập nhật vì nó có thể bị vô hiệu hóa trong NTFS. Kiểm tra fsutil behavior query DisableLastAccess
xem nếu nó là trên. Ngoài ra, dưới NTFS, có thể mất tới một giờ để LastAccessTime của tệp cập nhật sau khi được truy cập.