5

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

最快的方法是什么?

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

4

3 回答 3

2

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

有人在这里发布了一个很好的实现示例:https ://stackoverflow.com/a/724184/912851 。可能值得一看。

编辑: 我一生中看到的最快的是这个应用程序。它使用 ntfs 日志。并在几秒钟内列出了我硬盘上的数百万个文件。我认为他们在 C++ 或 c 上有一个 sdk 和源代码。也许您可以创建一个托管 dll 并在 c# 上使用?

于 2012-05-19T17:47:23.353 回答
0

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

于 2012-05-19T22:59:08.820 回答
-2
Func<string, int> files = null;
files = p => Directory.GetFiles(p).Length() + Directory.GetDirectories(p).Select(p1 => files(p1));

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

可怕但 linqy!

于 2012-05-19T17:44:14.540 回答