我必须在包含数百万个文件的文件夹上进行一些房屋清洁.最终我想抓取文件然后查看它们是否存在于数据库中.但我需要首先抓取文件而不会阻塞程序.
我试着去使用的路线
var file = Directory.GetFiles(uri, "*.*").FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
但这需要永远运行.因为文件的数量.
有没有更好的方法来获取不会花这么长时间的文件?
是的,Directory.EnumerateFiles是你在找什么.这将延迟加载您的文件,因此发出一个FirstOrDefault()不会等待读取所有文件.
来自文档:
EnumerateFiles和GetFiles方法的不同之处如下:当您使用EnumerateFiles时,您可以在返回整个集合之前开始枚举名称集合; 当您使用GetFiles时,您必须等待返回整个名称数组,然后才能访问该数组.因此,当您使用许多文件和目录时,EnumerateFiles可以更高效.
除此之外 - 拥有一个包含数百万个文件的文件夹只是一个坏主意.
| 归档时间: |
|
| 查看次数: |
793 次 |
| 最近记录: |