แนวทางที่ยอมรับได้มากที่สุดเมื่อต้องการลบไฟล์ในช่วงเวลาหนึ่งคือการใช้ LastWriteTime ของไฟล์ (ครั้งล่าสุดที่แก้ไขไฟล์):
Directory.GetFiles(dirName)
.Select(f => new FileInfo(f))
.Where(f => f.LastWriteTime < DateTime.Now.AddMonths(-3))
.ToList()
.ForEach(f => f.Delete());
(ข้างต้นอ้างอิงจากคำตอบของ Uri แต่มี LastWriteTime
)
เมื่อใดก็ตามที่คุณได้ยินคนพูดถึงการลบไฟล์ที่เก่ากว่ากรอบเวลาที่กำหนด (ซึ่งเป็นกิจกรรมที่พบได้บ่อย) การทำตาม LastModifiedTime ของไฟล์นั้นมักจะเป็นสิ่งที่พวกเขากำลังมองหา
หรือสำหรับสถานการณ์ที่ผิดปกติมากคุณสามารถใช้ข้อมูลด้านล่างนี้ได้ แต่ควรใช้สิ่งเหล่านี้ด้วยความระมัดระวังเนื่องจากมีข้อควรระวัง
CreationTime
.Where(f => f.CreationTime < DateTime.Now.AddMonths(-3))
เวลาที่สร้างไฟล์ในตำแหน่งปัจจุบัน แต่ระวังถ้าแฟ้มถูกคัดลอกมันจะเป็นเวลาที่มันถูกคัดลอกและCreationTime
จะใหม่LastWriteTime
กว่าของไฟล์
LastAccessTime
.Where(f => f.LastAccessTime < DateTime.Now.AddMonths(-3))
หากคุณต้องการลบไฟล์ตามครั้งสุดท้ายที่อ่านคุณสามารถใช้สิ่งนี้ได้ แต่ไม่มีการรับประกันว่าจะได้รับการอัปเดตเนื่องจากสามารถปิดใช้งานใน NTFS ได้ ตรวจสอบfsutil behavior query DisableLastAccess
ดูว่าเปิดอยู่หรือไม่ นอกจากนี้ภายใต้ระบบ NTFS อาจใช้เวลาถึงหนึ่งชั่วโมงเพื่อให้ LastAccessTime ของไฟล์อัปเดตหลังจากเข้าถึง