从文件夹列表中检索一个文件路径的最有效方法

本文关键字:路径 文件 一个 方法 有效 列表 文件夹 检索 | 更新日期: 2023-09-27 18:28:57

假设我有一个包含 100 多个文件夹路径的列表。我想从每个文件夹路径中检索一个文件路径。这是我正在做或计划做的方式:

var Files = new List<String>();
var Directories = Directory.GetDirectories("C:''Firstfolder''Secondfolder''");
Array.ForEach(Directories, D => Files.Add(Directory.GetFiles(D).FirstOrDefault()));

现在,这是最有效的方法吗?因为我的程序每次启动时都会执行此代码。

从文件夹列表中检索一个文件路径的最有效方法

而不是Directory.GetFiles使用Directory.EnumerateFiles来避免将所有文件路径加载到内存中。文档中的这句话解释了其中的区别:

EnumerateFilesGetFiles 方法的区别如下: 使用 EnumerateFiles 时,可以在返回整个集合之前开始枚举名称集合;使用 GetFiles 时,必须等待返回整个名称数组,然后才能访问数组。因此,当您处理许多文件和目录时,枚举文件可以更有效。

如果您使用的是 .Net 4.0,则应改为执行此操作...

var Files = Directories.SelectMany(x => Directory.EnumerateFiles(x).FirstOrDefault()).ToList();