首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >*最快*目录列表

*最快*目录列表
EN

Stack Overflow用户
提问于 2010-08-27 17:25:12
回答 3查看 6.4K关注 0票数 6

我有大量的目录,我想以最快的速度读取所有文件。我的意思是,不是DirectoryInfo.GetFiles速度快,而是“从磁盘低级获取集群”速度快。

当然,.NET 2.0、c#

这里也有类似的问题,但这种方法并不好:

C# Directory listing massive directory

有人建议在FindFirst/FindNext上使用pInvoke。有没有人尝试过,并且能够分享结果?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-27 17:56:24

对于一个“普通”的方法,基本上一切都归结为FindFirstFile/FindNextFile,你不会真的比它快得多……这并不是超快的。

如果你真的需要速度,看看手动读取-但要知道,这需要管理员特权,并且很容易在NTFS更新时崩溃(哦,对了,不适用于非NTFS文件系统)。你可能想看看this code,它有USN和MFT的东西。

然而,也许有一个不同的解决方案。如果你的应用程序经常运行并且需要获取更改,你可以从一次缓慢的FindFirstFile/FindNextFile传递开始,然后使用目录更改通知支持来获得更新通知……这适用于有限的用户,并且不依赖于文件系统结构。

票数 5
EN

Stack Overflow用户

发布于 2012-01-12 05:54:54

为了获得最佳性能,可以使用文档为ZwQueryDirectoryFile的P/Invoke NtQueryDirectoryFile。

(缺少直接访问磁盘和直接读取原始文件系统结构,这通常是不切实际的。)

票数 3
EN

Stack Overflow用户

发布于 2010-08-27 17:32:53

尝试使用像this DirectoryManager这样的工具,并根据需要对其进行改进。运行速度比.NET框架GetDirectories()GetFiles()更快,因为我们省略了它们的跨平台检查和调整。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3582823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档