如何递归列出所有文件并获取“正在运行”的文件

时间:2013-05-26 03:07:32

标签: c# winforms

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

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

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

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

1 个答案:

答案 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运行,你将一次获得每个文件,并且可以在方法中添加其他逻辑。