我正在编写一个程序,需要在目录及其所有子目录中搜索具有特定扩展名的文件。这将在本地和网络驱动器上使用,因此性能有点问题。
我知道我可以使用这种选择:
foreach (string file in Directory.EnumerateFiles(
path, "*.*", SearchOption.AllDirectories))
{
///
}
但我的文件夹会有很多文件,所以我想知道如何改变这种“正在运行”返回文件的搜索,而不是等待所有搜索完成(类似于队列)
答案 0 :(得分:2)
如果你的意思是你的方法应该逐个返回它们(假设你已经理解了EnumerateFiles()已经这样做了)。使用收益率回报:
public IEnumerable<string > Foo(string path)
{
foreach (string file in Directory.EnumerateFiles(
path, "*.*", SearchOption.AllDirectories))
{
// Add additional logic if you need here
yield return file;
}
}
这样,如果你在方法上使用foreach运行,你将一次获得每个文件,并且可以在方法中添加其他逻辑。