Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我需要我的程序来计算磁盘驱动器上的文件数。
最快的方法是什么?
Directory.GetFiles() 不是替代方法,因为它非常慢。
您是否尝试过导入kernel32.dll并使用它?
kernel32.dll
有人在这里发布了一个很好的实现示例:https ://stackoverflow.com/a/724184/912851 。可能值得一看。
编辑: 我一生中看到的最快的是这个应用程序。它使用 ntfs 日志。并在几秒钟内列出了我硬盘上的数百万个文件。我认为他们在 C++ 或 c 上有一个 sdk 和源代码。也许您可以创建一个托管 dll 并在 c# 上使用?
您可以读取驱动器 USN 日志,这非常快,但您需要管理员权限
Func<string, int> files = null; files = p => Directory.GetFiles(p).Length() + Directory.GetDirectories(p).Select(p1 => files(p1)); int count = files(@"c:\");
可怕但 linqy!