获取包含数百万个文件的第一个文件夹

Pre*_*ent 1 c#

我必须在包含数百万个文件的文件夹上进行一些房屋清洁.最终我想抓取文件然后查看它们是否存在于数据库中.但我需要首先抓取文件而不会阻塞程序.

我试着去使用的路线

var file = Directory.GetFiles(uri, "*.*").FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

但这需要永远运行.因为文件的数量.

有没有更好的方法来获取不会花这么长时间的文件?

Jam*_*iec 6

是的,Directory.EnumerateFiles是你在找什么.这将延迟加载您的文件,因此发出一个FirstOrDefault()不会等待读取所有文件.

来自文档:

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

除此之外 - 拥有一个包含数百万个文件的文件夹只是一个坏主意.