从10万个文件中找出相同的文件

q1531 2009-03-15 01:45:10
100万个文件,约300G左右,每个文件大小不超过400K,且位于不同文件夹下。
找出这些文件中相同的文件。

我的想法,计算出所有文件的MD5然后再找出MD5相同的文件,得到相同的文件。
有没有更好的方法?
...全文
170 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ciazealee 2009-03-15
  • 打赏
  • 举报
回复
学习。。。。
tanghuan 2009-03-15
  • 打赏
  • 举报
回复
由于文件数目太大,放在内存中肯定不行。所以你要把中间结果放到自己创建的文件或数据库等中进行持久化。
先把所有文件名读取出来,按文件大小的字节数分类。
再对同一字节数的文件读取内容,计算出MD5摘要后再对摘要进行排序。如果没有相同的摘要,说明没有相同内容的文件,如果存在一样摘要的,再对内容进行按字节比较看是否不一样(保险起见),如果你发现摘要一样,内容不一样,说明你找到一个摘要冲突,你可以把这个公布出来,说不定会引起轰动呢。
铁匠梁老师 2009-03-15
  • 打赏
  • 举报
回复
期待中,实际生产问题。有时候不好解决,等待高人
CNNRNNCNNRNN 2009-03-15
  • 打赏
  • 举报
回复
用不着那么费神吧,基本上文件名相同,文件大小相同就可认为是同一个文件了
zhoushaolan 2009-03-15
  • 打赏
  • 举报
回复
关注IO操作,api中找方法吧,学习
aihouting 2009-03-15
  • 打赏
  • 举报
回复
使用File类中的 File[] listFiles(FilenameFilter filter) 方法,并覆盖FilenameFilter 类中的 accept方法,判断文件是否是同一个文件,
迭代使用。
q1531 2009-03-15
  • 打赏
  • 举报
回复
约为275.9G才对!
郁闷。用计算器算的按错了。
q1531 2009-03-15
  • 打赏
  • 举报
回复
额!
发错了!

100万个文件, 100W*400/(1024*1204)约为2759G

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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