计算驱动器上的文件数

时间:2012-05-19 17:32:52

标签: c# io

我需要我的程序来计算磁盘驱动器上的文件数。

最快的方法是什么?

Directory.GetFiles()不是替代品,因为它非常慢。

3 个答案:

答案 0 :(得分:2)

您是否尝试导入kernel32.dll并使用它?

有人在此之前发布了一个很好的实施示例:https://stackoverflow.com/a/724184/912851。值得一看。

修改 我生命中看到的最快的是this application。它使用ntfs期刊。几秒钟之内就会在我的硬盘上列出数百万个文件。 我认为他们有一个sdk和C ++或c的源代码。也许你可以创建一个托管dll并在c#上使用?

答案 1 :(得分:0)

您可以读出驱动器USN日志,这非常快,但您需要管理员权限

答案 2 :(得分:-2)

Func<string, int> files = null;
files = p => Directory.GetFiles(p).Length() + Directory.GetDirectories(p).Select(p1 => files(p1));

int count = files(@"c:\");

可怕但是很有意思!