【发布时间】:2013-01-15 08:57:29
【问题描述】:
我正在尝试删除所有超过 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 或任何其他较小的方法 实现这一目标
提前致谢!
【问题讨论】:
-
foreach有什么问题?你的方法对我来说很好。 -
如果您是这个意思,您不能一次全部删除它们。您可以使用
Parallel.ForEach并行运行它们(.Net 4 和 4.5) -
foreach是的较小部分,我想说... =) 但是,为了缩短您的代码,您可以通过将您的using语句中的命名空间位于顶部。 -
@PawanNogariya:我第一眼看到的唯一一件事是您可以将
directory.GetFiles替换为directory.EnumerateFiles。后者(4 中的新功能)不需要在开始处理之前将所有内容加载到内存中。 -
如果您想查看或改进工作代码,请尝试Codereview.stackexchange