计算文件夹中的文件数量(最快的方式)

时间:2014-03-13 08:44:23

标签: .net vb.net count directory

我在计算文件共享上的文件时遇到问题(存在时间超过1小时):

两种“已知”方法:

的GetFiles

dir.Getfiles.Where(Function(x) x.CreationTime < DateTime.Now.AddHours(-1)).Count()

链接:GetFiles

EnumerateFiles

dir.EnumerateFiles.Where(Function(x) x.CreationTime < DateTime.Now.AddHours(-1)).Count()

链接:EnumerateFiles

有没有更快的方法来计算文件夹/文件共享中的文件数?

文件数量可能从2000到500,000不等。上面显示的两种方法都显示超出30 000个文件的性能急剧下降。

在SO上发现的问题没有为我解决:

fastest-way-to-count-folder-files-in-net-4-0

how-to-correctly-count-the-number-of-files-in-a-folder

1 个答案:

答案 0 :(得分:1)

另一种选择是:

FileSystemWatcher Class

跟踪添加和删除 添加和删​​除集合。

我认为DirectoryInfo.EnumerateFiles会更快 原因有两个:
在整个集合返回之前列举一个 二是它包括日期。 Getfiles只返回名称,因此它可能会再次获取日期。

DirectoryInfo Methods