[C++] 谁知道 everything 等快速搜索软件的原理啊?

oN5GrzoN 2012-11-14 09:53:04
大家都知道它是通过快速建索引找文件的,但不知道具体怎么做。

而且只能在NTFS盘上用,FAT32的盘上就不能。我研究过,好像NTFS盘上默认就有个索引表,不知道在哪,怎么获取。
...全文
688 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
windmind2005 2012-11-20
  • 打赏
  • 举报
回复
NTFS是B+树,FAT32是链表,随机访问的时间效率差着级别。 有关NTFS的格式,MS有资料说明,我记得好像有中文版的。 everything除了利用OS的FS之外,自己也是要作索引的。
sxcong 2012-11-19
  • 打赏
  • 举报
回复
Windows资源管理器界面,是调用系统api来实现的,codeproject.com, vckbase.com上有很多代码。或者看bcg,xtreme等代码,csdn上就有不少下载。
oN5GrzoN 2012-11-15
  • 打赏
  • 举报
回复
引用 2 楼 IranCyberArmy 的回复:
原理很简单,NTFS硬盘,用Windows API 函数findfile(函数名不一定,反正差不多这样),搜出来的结果默认是按文件名排好序的,那么,把所有文件夹 及文件名搜出来,用分治排序排出来,秒秒钟的事情。 而FAT32硬盘,搜出来结果是按写入磁盘的时间排序的,所以没法用分治排序重新整个排,这样效率就会很慢,所以它默认不给你FAT32硬盘搜。 所有文件(夹……
这样啊,我还想问一下,它是怎么弄的Windows资源管理器界面的,就是鼠标右键搜出来的文件夹,可以显示在资源管理器里点击文件夹右键弹出的所有项。
IranCyberArmy 2012-11-15
  • 打赏
  • 举报
回复
原理很简单,NTFS硬盘,用Windows API 函数findfile(函数名不一定,反正差不多这样),搜出来的结果默认是按文件名排好序的,那么,把所有文件夹 及文件名搜出来,用分治排序排出来,秒秒钟的事情。 而FAT32硬盘,搜出来结果是按写入磁盘的时间排序的,所以没法用分治排序重新整个排,这样效率就会很慢,所以它默认不给你FAT32硬盘搜。 所有文件(夹)名搜出来,又摆了序,你输入一个字符,就用2分法来找,就像词典查词一样,很快的。
Chivalry 2012-11-14
  • 打赏
  • 举报
回复
应该和磁盘上的索引表有关系,我也不知道。。。

1,650

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧