如何使用DirectoryInfo.GetFiles并在找到第一个匹配后停止?

Rid*_*Dev 4 c# getfiles file-search

需要搜索目录/子目录以查找文件,一旦找到文件就更愿意停止.

这是我缺少的DirectoryInfo.GetFiles内置的功能,还是我应该使用其他东西(自我实现的递归搜索)?

Bro*_*ass 13

使用DirectoryInfo.EnumerateFiles()而不是懒惰返回文件(而不是GetFiles将完整文件列表首先放入内存) - 您可以添加FirstOrDefault()以实现您想要的:

var firstTextFile = new DirectoryInfo(someDirectory).EnumerateFiles("*.txt")
                                                    .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

来自MSDN:

EnumerateFiles和GetFiles方法的不同之处如下:使用EnumerateFiles时,可以在返回整个集合之前开始枚举FileInfo对象的集合; 当您使用GetFiles时,您必须等待返回整个FileInfo对象数组,然后才能访问该数组.因此,当您使用许多文件和目录时,EnumerateFiles可以更高效.

(DirectoryInfo.EnumerateFiles需要.NET 4.0)