新手问问题,小妹初来乍到,请多多指教!
我现在要用vc开发一个能够搜索硬盘下任意一个或多个目录的重复文件,并把这些文件删除的小工具,已经自己做了一些,但是还有很多问题。听说这里高手云集,所以就把问题带来啦。
1。查找算法:我给搜索到的所有文件赋一个hash值,然后利用比较这个hash值来找相同文件名的文件,但是还是要一个一个文件进行比较,在文件多的时候,常常要等上十几甚至几十分钟,不知道有没有快一点的算法?
2。界面:我用listctrl来显示找到的文件,但是文件较多的时候就无法显示了,不知道有没有好点的办法?
多谢啦!
问题点数:100、回复次数:10Top
1 楼ReverseU(初来乍到,多多关照)回复于 2005-07-07 09:43:47 得分 10
有专门的api函数可以做这些。FindFirstFile, FindNextFile 等等。然后利用递归就可以遍历硬盘。注意递归算法写不好会导致一些目录选不到。最好参考成熟的算法。祝你好运。Top
2 楼rtdb(东临碣石)回复于 2005-07-07 09:46:20 得分 10
1. 可能你的HASH有问题。 其实按文件名排序就好了,查找起来肯定就够快了。
2. 加上翻页功能,一次显示一部分。
Top
3 楼fisker0303(天塌了,地陷了,小花狗不见了.)回复于 2005-07-07 09:53:33 得分 10
超级兔子有这功能,速度也不是很快,看来算法在这里很关键。Top
4 楼linestyle(linestyle)回复于 2005-07-07 09:53:33 得分 10
对文件名进行处理可能会不准确,建议算每个文件的md5,另外最好把每个目录作为一个hash表项,如果每个文件都做一个HASH表项,这种大表碰撞太多,速度一定不好。Top
5 楼54783szg(百里洲)回复于 2005-07-07 10:00:30 得分 10
用分级索引可能会快点Top
6 楼goodboyws(深夜不眠者(VCMVP))回复于 2005-07-07 10:01:20 得分 20
1.你的查找算法有问题,应该是先排序,然后用二分查找,另外你可能用到了map, set之类的集合类,这些类每加入一个元素,都要进行定位判断,多了就会很慢,建议直接用数组.
2.应该不是无法显示,而是显示的慢,用自绘Top
7 楼xift_2008(☆冲浪者☆)回复于 2005-07-07 10:10:47 得分 10
1.最优搜索二叉树,运行时间应该是平方级吧。
2.这个加个下拉滑块应该可以吧。Top
8 楼gigiluo()回复于 2005-07-07 10:15:41 得分 0
太谢谢各位了,虽然有些问题还是不太明白,可是已经有不少启发了!不知道最多可以给多少分,我第一次用,所以只好每位大虾先加上10分了,其实我恨不得把自己所有的分数都加上去!
to goodboyws(深夜不眠者)
自绘是如何实现呢?Top
9 楼idAnts(此广告位招租)回复于 2005-07-07 10:18:27 得分 10
2。界面,建议使用Virtual List-View,自己负责添数据,还方便排序。Top
10 楼shxng(重新开始。。。)回复于 2005-07-07 10:21:21 得分 10
学习一下了Top




