Найбільш канонічний підхід при бажанні видалити файли протягом певної тривалості - це використання LastWriteTime файлу (Останній раз, коли файл був змінений):
Directory.GetFiles(dirName)
.Select(f => new FileInfo(f))
.Where(f => f.LastWriteTime < DateTime.Now.AddMonths(-3))
.ToList()
.ForEach(f => f.Delete());
(Вище сказане на основі відповіді Урі, але з 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 може зайняти до години після доступу до нього.