2012-08-06 106 views
0

我正在编写一个程序,通过文件名和文件内容(纯文本)搜索整个文件系统。是否有任何算法或开源项目可以使搜索速度非常快?我在Windows上使用FAT/NTFS文件系统执行此操作,我不想索引。在FAT32/NTFS文件系统上快速搜索

+0

你不应该担心它,因为你的算法将必然受到硬盘速度的限制,除非它是绝对可怕。 – Wug 2012-08-06 07:50:22

+0

谢谢@Wug,我想我将不得不枚举所有文件并为快速磁盘祈祷。 – 2012-08-07 07:28:52

回答

1

在SourceForce上下载了一个NTFS搜索器(名为NTFS-Search),它的工作非常好!它首先读取'FAT'一词,然后它非常快。只有界面是德文的。

您可以用SVN下载源:

svn co https://ntfs-search.svn.sourceforge.net/svnroot/ntfs-search 
1

如果您只是通过文件名/文件属性/文件日期进行搜索,那么具有最佳性能的“魔术”方法是手动“解析”文件分配表(如果文件系统是FAT)和主文件表(如果文件系统是NTFS)。

对于FAT文件系统来说这不是太难,因为它非常简单并且有很好的文档记录,但是对于NTFS来说更难,因为文件系统更加复杂并且没有很好的记录。

如果你还想搜索文件内容,那么就没有办法,只能枚举所有文件的阅读内容。您将永远受到磁盘读取速度的限制,如果不对索引文件内容编制索引,则无法对其进行优化。

+0

谢谢@ ken2k。受磁盘读取速度限制的性能是我的想法,因为我确实需要搜索文件内容。顺便说一句,你知道是否有任何现成的搜索算法/框架,我可以利用?我问谷歌,他说没有什么帮助。 – 2012-08-07 07:22:44

+0

以编程方式挖掘文件系统的文件表并不是你应该做的事情。使用操作系统提供的界面来读取文件。 – Wug 2012-08-07 16:43:37

+0

@Wug这不是建议的,但如果搜索速度(仅基于文件名/属性)是主要要求,那么这是一个选项 – ken2k 2012-08-07 16:58:13