迭代文件夹和子文件夹的最佳方法

Rod*_*Rod 35 c# directory subdirectory

迭代文件夹和子文件夹以获取从指定位置开始的每个文件夹中的文件大小,文件总数和文件夹总大小的最佳方法是什么?

Chr*_*way 48

如果您使用的是.NET 4,则可能希望使用System.IO.DirectoryInfo.EnumerateDirectoriesSystem.IO.DirectoryInfo.EnumerateFiles方法.如果您使用Directory.GetFiles其他帖子推荐的方法,则在检索到所有条目之前,方法调用将不会返回.如果使用递归,这可能需要很长时间.

文档:

EnumerateFilesGetFiles的方法的区别如下:

  • 使用时EnumerateFiles,可以FileInfo在返回整个集合之前开始枚举对象集合.
  • 使用时GetFiles,必须等待FileInfo返回整个对象数组,然后才能访问该数组.

因此,当您使用许多文件和目录时, EnumerateFiles可以更高效.

  • 不得不跳过十几个使用 GetDirectory() 的例子来找到这个。> 50k 目录太慢了。感谢拯救我一天的罕见例子。 (2认同)

Llo*_*oyd 29

使用Directory.GetFiles().我相信,该页面的底部包含一个完全递归的示例.


saf*_*afi 5

无论子文件夹和文件有多少,都要遍历所有目录子文件夹和文件.

string [] filenames;
 fname = Directory.GetFiles(jak, "*.*", SearchOption.AllDirectories).Select(x => Path.GetFileName(x)).ToArray();
Run Code Online (Sandbox Code Playgroud)

然后从数组你可以通过循环或你想要的东西得到你想要的.