如何递归地列出所有的文件,并“继续”获取文件

本文关键字:文件 获取 继续 何递归 递归 | 更新日期: 2023-09-27 18:15:27

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

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

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

但是我的文件夹中有很多文件所以我想知道如何实现这种搜索让文件返回"正在进行中"而不是等待直到所有搜索完成(类似Queue)

如何递归地列出所有的文件,并“继续”获取文件

如果您的意思是您的方法应该一个接一个地返回它们(假设您已经理解EnumerateFiles()已经这样做了)。使用yield return:

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,你将一次获得每个文件,你可以在方法中添加额外的逻辑。