【发布时间】:2018-05-29 03:00:20
【问题描述】:
我想要做的是搜索/扫描一个目录以查找以某些内容开头的多个文件,然后获取最近一次修改的文件。例如,我想在 Prefetch 目录中搜索以“apple”、“pear”和“orange”开头的文件。这些文件可能不存在,但如果它们存在,并且说有以 apple 开头的文件和以 pear 开头的文件,在所有这些文件中,我想获得最近修改的文件。下面的代码允许我这样做,但只搜索一件事。
DirectoryInfo prefetch = new DirectoryInfo("c:\\Windows\\Prefetch");
FileInfo[] apple = prefetch.GetFiles("apple*");
if (apple.Length == 0)
// Do something
else
{
double lastused = DateTime.Now.Subtract(
apple.OrderByDescending(x => x.LastWriteTime)
.FirstOrDefault().LastWriteTime).TotalMinutes;
int final = Convert.ToInt32(lastused);
}
基本上,我怎样才能使代码搜索“苹果”、“梨”等而不是苹果?我不知道您是否可以修改上面的代码来做到这一点,或者您是否必须完全更改它。我一直试图解决这个问题几个小时,但无法做到。
【问题讨论】:
-
只需使用适当的模式调用 GetFiles 三次,将结果存储在三个不同的数组中,然后将它们添加到一个列表中。现在您可以通过降序应用顺序并获取列表的第一个元素。不清楚你最后想用那个计算做什么
-
我可以看到这将如何工作并且可能会解决我的问题,但是我将如何存储它们并将它们添加到列表中?
-
声明一个 List
然后使用 AddRange 将这三组文件添加到同一个列表中。现在,该列表中的 OrderByDescending 和 FirstOrDefault 将为您提供该集合中最近写入的文件。 -
我得到了这个工作,非常感谢。无法将其标记为正确,因为它不是答案,但谢谢;p
-
好吧,添加了一个答案以进一步简化模式上的循环。
标签: c# search directory fileinfo