我需要我的程序来计算磁盘驱动器上的文件数。
最快的方法是什么?
Directory.GetFiles()不是替代品,因为它非常慢。
答案 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:\");
可怕但是很有意思!