我需要获取驱动器上所有文件的列表。 我正在使用recursion解决scheme。 但是这花了很多时间。 我想知道,是否有可能从它的主文件表中获取NTFS驱动器上的所有文件的名称和位置? 我认为这将是非常快的。 有什么build议么?
在Linux中的特定块上打开文件
寻找单位/集成testing的文件夹比较实用程序
ctime总是<= mtime?
为什么Windows需要为`file_get_contents`命名`utf8_decode`文件名?
当您使用递归解决方案获取NTFS格式化驱动器上所有文件的列表时,您将从MFT获取它们。 简单地检索文件名和目录列表时,MFT之外应该有小磁盘IO。
在确定MFT格式(可以从互联网上的各种地方获得)以及编写代码直接读取它的格式之前,您应该对您的代码进行剖析,并确定您不是cpu或IO界。
有一个工具可以直接搜索mft,叫做ndff。 我以前用过,速度非常快。
大概有可能做你想做的事 – 还有另外一个叫做“Everything”的工具,我猜也是一样的 – 它也使用USN更改日志来更新它的索引。
我有一个印象,你正在想象MFT中的某种类似于列表的结构,你可以一眼就读完,而且没有或者很少寻找。
不是这种情况。 MFT使用一种b-tree来存储路径名。 当你扫描磁盘上的目录结构时,实际上你正在走MFT B-树; 你正在做什么,如果你直接访问MFT你将不得不做的。
是的,我刚刚开源的程序就是这样做的。
您可以阅读源代码以了解其工作原理,但基本上,它只是在$ MFT中查找FILE_NAME属性 ,然后使用ParentDirectory字段获取每个文件的父项。
这样可以完全避免读取任何目录的内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。