Directory.EnumerateFiles和 GetFiles的区别是什么?
Directory.EnumerateFiles
GetFiles
显然,一个返回数组,另一个返回 Enumable。
还有别的事吗?
来自 那些文件:
EnumerateFiles 和 GetFiles 方法的不同之处如下: 使用 EnumerateFiles 时,可以在返回整个集合之前开始枚举名称集合; 使用 GetFiles 时,必须等到返回整个名称数组之后才能访问数组。因此,当您使用许多文件和目录时,EnumerateFiles 可以更有效率。
因此,基本上,EnumerateFiles返回一个 IEnumerable,它可以在某种程度上进行延迟计算,而 GetFiles返回一个 string[],它在返回之前必须完全填充。
EnumerateFiles
IEnumerable
string[]
EnumerateFiles返回 IEnumerable<string>,这意味着延迟执行。
IEnumerable<string>
由于 File 系统是出了名的慢(特别是对于大文件夹) ,延迟执行对于顺序处理来说是一个真正的好处。取决于很多其他因素。
当使用 EnumerateFiles 时,如果使用 .Last,则会失去所有速度。这当然有意义,因为要获取最后一个文件,它需要枚举所有文件,然后获取最后一个文件。
.Last
但是,使用 .First或 .FirstOrDefault会变得非常快,因为它只是抓住第一个项目并继续前进。
.First
.FirstOrDefault