在数百万个文件的文件夹中获得第一个文件

本文关键字:文件 第一个 数百万 百万个 文件夹 | 更新日期: 2023-09-27 18:07:05

我得清理一个有数百万个文件的文件夹。最后,我想抓住文件,然后看看它们是否存在于数据库中。但是我需要在程序不卡住的情况下先抓取文件。

我试着用

var file = Directory.GetFiles(uri, "*.*").FirstOrDefault();
但是

需要很长时间才能运行。因为文件太多了。

有没有更好的方法来抓取不需要这么长时间的文件?

在数百万个文件的文件夹中获得第一个文件

是的,Directory.EnumerateFiles就是你要找的。这将延迟加载文件,因此发出FirstOrDefault()不会等待所有文件都被读取。

From the docs:

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

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