0

我正在编写一个程序,该程序需要在目录及其所有子目录中搜索具有特定扩展名的文件。这将在本地驱动器和网络驱动器上使用,因此性能有点问题。

我知道我可以使用这种选项:

  foreach (string file in Directory.EnumerateFiles(
        path, "*.*", SearchOption.AllDirectories))
    {
        ///
    }

但是我的文件夹会有很多文件,所以我想知道如何实现这种搜索“持续”返回文件,而不是等待所有搜索完成(类似于队列)

4

1 回答 1

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 运行,您将一次获取每个文件,并且您可以在方法中添加额外的逻辑。

于 2013-05-26T05:18:59.657 回答