繁体   English   中英

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

[英]Most efficient way to retrieve one file path from a list of folders

假设我有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 ,必须等待返回整个名称数组,然后才能访问该数组。 因此,当您处理许多文件和目录时,EnumerateFiles可能会更有效。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM