解决方法
这是一个棘手的问题.我不记得看到任何非索引搜索的实例显示进度条. (任何人都可以证明我错了吗?)
我建议使用以下方法(Benny Hallett的建议的延伸),这可能会提供更多的颗粒度.
假设您正在整个文件系统中搜索特定的文件名模式(例如在unix中搜索/上的所有* .jpg文件)
首先将进度条划分为N个部分(其中N是搜索根路径中的目录数).
每次深入到目录heirachy时,分配给父目录的总进程条长度将根据其包含的子目录数进行划分.完成目录搜索后,分配给它的部分将添加到进度条.有关更多详细信息,您可以进一步将分配除以当前目录中的文件目录数.
此方法应确保您只需遍历目录结构一次,它应该更好地处理不均匀的目录. (不均匀我指的是搜索成本高和低的目录混合)
作为一个例子,我们假设一个像这样的目录结构:
/ clipart photos family holiday wallpapers anime landscapes
(每个缩进指示目录树中更深的级别,并假设所有目录遍历都按字母顺序完成)
你首先看看’/’并看到有三个目录(剪贴画,照片和壁纸),因此你最初将进度条划分为三分之一.
然后,您搜索剪贴画目录,完成后,将进度条更新为三分之一.然后你进入内部照片,看到有两个子目录.这意味着当你完成搜索家庭时,你会在进度条中添加六分之一,因为有两个子目录(家庭和假日),每个子目录的进度构成了分配给照片的三分之一.
总结如下:
完成剪贴画增加了三分之一
完成照片/家庭增加六分之一
完成照片/假期增加六分之一
完成壁纸/动漫增加了六分之一
壁纸/风景的完成增加了六分之一
总共1.0(或100%)(忽略浮点精度)