问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-05-18 04:36

我来回答

4个回答

热心网友 时间:2023-10-09 07:58

不同内容得出相同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 值可以大大提高文件比较的速度。

热心网友 时间:2023-10-09 07:59

这个要看你要比较的范围了

如果你是要比较两个文件是否完全相同,当然是MD5比较好

如果你是要比较两个文件的内容是否完全相同,就需要一个字节一个字节的比较。

比中两个word文档,即使里面的内容是完全一样,但可能由于修改时间,日期,作者等不同,MD5也可能不同追问请问计算MD5时每次读取多少字节效率比较高?

追答这个没有绝对,因为要看内存的大小,如果你的内存较大,就一次读取大点,如果内存较小就一次读取的小一点

具体的数值,这个你可以自己根据内存的大小调整

热心网友 时间:2023-10-09 07:59

我感觉是按字节比较好一些,我用的方法就是按字节比较的。
1:先判断2个文件的长度是否一样
2:如果文件一样长则将文件读取出来一个字节一个字节的比较他们的内容是否相同

看你的这个问法应该也是不需要我把细节的地方都写出来了追问这样在比较大文件时,效率是不是比计算md5低啊?

热心网友 时间:2023-10-09 08:00

先比大小,后比内容
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2024年云南292分能考上什么大学? 2024高考多少分能被焦作大学录取 【芍药花茶】芍药花茶的功效与作用 芍药花茶怎样喝 芍药花茶的介绍 芍药花茶的属性和功效 联想拯救者电竞手机Pro评测 植物大战僵尸花园战争有用的激活码发给我,有用我就采纳 亲亲奶爸《亲亲奶爸》歌词 植物大战花园战争激活码只能用一次? 歌词中带有。我的好爸爸。我的好爸爸。儿女怎能舍得让你走,_百度... edge浏览器没声音是怎么回事-edge浏览器没声音解决办法 java 获取1G文件md5 要多久 java怎么计算大于计算机内存的文件的MD5 怎么用自己的手机差别人发过的红包和转账记录 jquery如何实现随机抽取一句话? 中国海事综合服务平台中国海事综合服务平台,船舶用户忘记密码且app进行不了修改怎么办?重新注册ap_百度问一问 如果ap注册了不想考 可以退款吗 请问这种图表怎么做?word、excel都行。 AP商标已注册哪些类别? 注册App叫填写Ap和ID地址是骗局吗? AP广告联盟的注册要求 苹果手机ap注册的时候手机号只能用移动? 请问天翼空间个人AP如何申请? 一部手机怎么注册两个不同监控ap? NBA中文全称 NBA中文缩写是什么 NBA用中文表示是什么? NBA的全称是什么?中文是什么意思? nba中文是什么意思? nba中文代表什么意思 NBA用中文怎么说? java 算文件的MD5值是怎么用十六进制表示的 超大文件如何计算md5 java MD5 对应的C#方法 java d的MD5算法怎么用 JAVA MD5 和NET MD5 前端算大文件的MD5值有什么好的办法么 张江的绿地Mtown和盛大青春里值得购入投资么 民生银行pos机刷卡手续费怎么算 已经充值成为腾讯视频会员,每个月有两张观影券,如果用完,能不能付费看“会员用券”的电影?观影券能不 有个爱吃大蒜的女友是种什么样的体验? 枇杷树 作文 400多字左右 描写枇杷或者雨的一段文章300个字左右 一汽大众捷达怎么样? 一汽大众的2015款捷达怎么样 一汽大众捷达 一汽大众捷达问题如何反馈 一汽大众捷达板筋如何 如何为失去智力行动能力老人办银行卡? 老人不认字可以办银行卡吗? 有残疾证的家人能办理银行卡吗