Я хотел бы знать (использующий C#), как я могу удалить файлы в определенном каталоге, более старом, чем 3 месяца, но я предполагаю, что период даты мог быть гибким.
Только быть ясным: Я ищу файлы, которые являются более старыми, чем 90 дней, другими словами, файлы создали, меньше чем 90 дней назад должен быть сохранен, все другие удалили.
Что-то вроде этого.
using System.IO;
string[] files = Directory.GetFiles(dirName);
foreach (string file in files)
{
FileInfo fi = new FileInfo(file);
if (fi.LastAccessTime < DateTime.Now.AddMonths(-3))
fi.Delete();
}
Свойство GetLastAccessTime класса System.IO.File должно помочь.
Обычно вы можете использовать Directory.Getfiles (Path), чтобы получить список всех файлов. После этого вы просматриваете список и вызываете GetLastAccessTim (), как предложил Кейт.
вам просто понадобится FileInfo -> CreationTime
, а не просто вычислить разницу во времени.
в app.config вы можете сохранить значение TimeSpan , указывающее, сколько лет должно быть удалено файлу.
также проверьте метод DateTime Subtract .
удачи
Для тех, кто любит чрезмерно использовать LINQ.
(from f in new DirectoryInfo("C:/Temp").GetFiles()
where f.CreationTime < DateTime.Now.Subtract(TimeSpan.FromDays(90))
select f
).ToList()
.ForEach(f => f.Delete());
В качестве альтернативы вы можете использовать метод File.GetCreationTime , если вам нужно удалить файлы на основе дат создания.
Вот фрагмент того, как получить время создания файлов в каталоге и найти те, которые были созданы 3 месяца назад (90 дней назад, если быть точным ):
DirectoryInfo source = new DirectoryInfo(sourceDirectoryPath);
// Get info of each file into the directory
foreach (FileInfo fi in source.GetFiles())
{
var creationTime = fi.CreationTime;
if(creationTime < (DateTime.Now- new TimeSpan(90, 0, 0, 0)))
{
fi.Delete();
}
}