使用创建日期过滤器从目录中删除文件

本文关键字:删除 文件 创建日期 过滤器 | 更新日期: 2023-09-27 17:57:00

我正在尝试删除所有超过 1 小时的 pdf 文件,我正在使用此代码

System.IO.DirectoryInfo directory = new DirectoryInfo(System.Configuration.ConfigurationManager.AppSettings["PDFFilesPath"]);
var files = directory.GetFiles("*.pdf").Where(f => DateTime.Now.Subtract(f.CreationTime).TotalMinutes >= int.Parse(System.Configuration.ConfigurationManager.AppSettings["MinutesOld"]));
foreach (var file in files)
{
    file.Delete();
}

代码工作正常且符合预期。

但我想知道是否有任何方法不使用foreach或任何其他较小的方法来实现这一点

提前感谢!

使用创建日期过滤器从目录中删除文件

您可以使用 LINQ 在 Linq 代码的末尾添加以下内容。

.ToList()
    .ForEach(f => f.Delete());

请记住,即使是幕后的 Linq 也会使用迭代器;我会按原样离开

也看看这个答案

使用 .NET 删除目录中超过 3 个月的文件

如果你想要一个衬里,你可以使用:

files.ToList<FileInfo>().ForEach((FileInfo f) => { f.Delete(); });

但这效率低下,真的没有任何意义。你现在的做法是正确的。

有关详细信息,请参阅此文章。