我有大量的目录,我想尽快读取所有文件.我的意思是,快速没有DirectoryInfo.GetFiles,而是“从磁盘低级别获取集群”.
当然,.NET 2.0,c#
类似的问题在这里,但这种方法没有任何好处:
C# Directory listing massive directory
有人建议在FindFirst / FindNext上使用pInvoke.有人试过这个并且能够分享结果吗?
解决方法
对于“正常”方法,基本上一切都归结为FindFirstFile / FindNextFile,你实际上并没有比这更快……而且这不是超级涡轮增压.
如果你真的需要速度,请考虑手动阅读MFT – 但要知道这需要管理员权限,并且每当NTFS更新时都容易中断(并且,哦,是的,对于非NTFS文件系统不起作用).你可能想看看this code有USN和MFT的东西.
但是,也许有一个不同的解决方案.如果您的应用程序不断运行并且需要接收更改,您可以通过执行一个缓慢的FindFirstFile / FindNextFile传递开始,然后使用目录更改通知支持来获知更新…这对于有限的用户是有效的,并且不会取决于文件系统结构.