中易网

java比较2个文件是否是相同的文件,是一个一个字节比较还是计算MD5比较好啊?

答案:4  悬赏:30  
解决时间 2021-01-31 12:25
java比较2个文件是否是相同的文件,是一个一个字节比较还是计算MD5比较好啊?
最佳答案
不同内容得出相同MD5值,虽然概率低,但总是不放心。如果在已知文件编码范围的条件下,找到MD5绝对区分长度范围(即:该范围内取样内容的MD5相同的,内容保证相同;绝不存在不同内容得出相同MD5值的现象),那么,可按合理的长度分片、按一定顺序遍历整个文件(属性信息、头部、尾部、同步随机点、其他),比较MD5,一旦有异立即判定文件不同,终止比较。这种分片取样比较MD5的思路可能快于逐字节比较也绝对可信

要确保 100%正确就必须校验全文,通过以上思路来比较,即是。
(注:

其他据说相对于MD5来讲不易碰撞(即不同内容得出相同MD5值的概率可能更低)的算法推荐:起码 SHA1 ,最好 SHA256、 SHA512、MD5+CRC32、HMAC,或者几种不同类型算法的同步进行。

在精通算法的情况下,将这里推荐的算法取代上文中提到的MD5来考量,能扩大绝对区分长度范围,可能更方便更快的比较。

但是又有这样的考虑:逐字节比较的算法最简单,算法弄复杂了反而会增加额余的时间;逐字节比较的算法也可以放到上文中来考量,进行同步取样和各种遍历的顺序与方式,说不定,在保证100%的可信度的条件下,逐字比较反而最快呢?
我觉得时间的耗费关键处在于,所有的算法,都要将两个位于不同区域或载体的文件的同位区域收集到一起进行比较,这个收集花费时间Ta(i),与取样长度、存储区域或载体等相关;{如果要将文件取很大一部或全部读入内存,然后再逐一集中比较,则会减小以上的Ta(i),而增加一个额外读入的时间Tc(i)*次数M(i)}。比较的次数大致为N(i);而如果在一个文件中顺序读取一个区域并且计算它的某个整体评定值,这个花费的时间为Tb(i),与取样长度、计算程序、设备性能等相关。

总体的比较时间大致是Ta(i)*N(i)*Tb(i)+{Tc(i)*M(i)}
逐字节比较,其中Tb(i)、Ta(i)都是最短的,但是N(i)最大,

总之,可以设计不同的算法,通过实际环境和文件的检测,来决定采用何种算法。


外一则:
两个取样内容, MD5等算法的计算值 不同,则内容一定不同; 计算值相同,则 内容可能相同,但可能性是否达到100%,内容相同的概率是多少,根据编码范围、算法来确定。如果是比较一个文件和许多其他文件是否相同,并且提前知道其他文件的 MD5 值,可先比较 MD5 值可以大大提高文件比较的速度。
全部回答
我感觉是按字节比较好一些,我用的方法就是按字节比较的。 1:先判断2个文件的长度是否一样 2:如果文件一样长则将文件读取出来一个字节一个字节的比较他们的内容是否相同 看你的这个问法应该也是不需要我把细节的地方都写出来了
这个要看你要比较的范围了 如果你是要比较两个文件是否完全相同,当然是MD5比较好 如果你是要比较两个文件的内容是否完全相同,就需要一个字节一个字节的比较。 比中两个word文档,即使里面的内容是完全一样,但可能由于修改时间,日期,作者等不同,MD5也可能不同

sun有默认实现

byte [] result = messagedigest.getinstance("md5").digest("司法司法飞洒司法".getbytes());

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
英魂之刃建公国需要什么条件
内蒙古农业大学食堂的评价
从北师大到大观园的乘车路线?
请问红色凉粉 用什么做的?
求一公子从古代穿越到现代桀骜的弟弟身上,原
身高差距20CM,年龄差距5岁,有可能吗?
特地陶瓷这个牌子的抛光砖好不好?有买过的朋
oppor2017USB连接不上电脑
一个长期压抑的人,时间久了,心里面会产生什
蓟县火车站上午几点是去天津北站的啊?
怎样制作酒店的点菜单?
两个属相一样的人,生日差一月在一起好不好
“等闲”都有哪些意思,比如:莫等闲
求csgo里面“AK47 | 水栽竹”的纹理文件
cpa注册会计师,注册资产评估师和注册会计师属
推荐资讯
thinkphp3.1.3 开启子域名部署后,如何对每个
6、64÷3、3循环小数。 求解达
求指导发言稿怎么写
小孩子手足口病手上脚上那些红点都消失了只有
男朋友跟我抢手机。我不给。结果抢着抢着就打
虾被冰箱急冻解冻后居然活了
把普通小麦的花粉和一部分体细胞,通过组织培
南宁哪儿可以定制DIY手机壳,就是把自己照片印
花草坊地址在什么地方,我要处理点事
丰田花冠原厂的点火线圈是啥牌子
求男主穿越到一个美国少年的身上的耽美小说,
暖壶里装热水一个礼拜不用会不会损害暖壶。
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?