首先最简单的方式就是把你的兩行代码结合起来,先保存文件再读取文件流计算MD5MD5:
当然这样做要对同一个流读取两次,显得不够低碳环保
此时可以看下DigestUtils源码,追其根溯其源可以看到:
也不是多高级的技术就是把整个InputStream拆成长度1024的字节数组逐个MD5。
同样也是讲InputStream拆成4096的字节数组逐个写到目标文件中。
那麼两者结合起来代码也就好写了:
// 计算MD5MD5,顺便写到文件
在项目中经常需要使用计算MD5文件嘚md5用作一些用途,md5计算MD5算法通常在网络上查询时,一般给的算法是读取整个文件的字节流然后计算MD5文件的md5,这种方式当文件较大,且囿很大并发量时则可能导致内存打爆掉。所以如下代码提供了几种方式并通过计算MD5一个323M的文件的md5和大小给出了,GC的一些信息
以上三种方式通过注释其他两种,只运行其中一种的方式来给出JVM的一些信息
运行时加入参数jvm参数:
可以看出前两种方案是可取的第三种方式内存占用太高。
确认一键查看最优答案
本功能为VIP专享,开通VIP获取答案速率将提升10倍哦!
首先最简单的方式就是把你的兩行代码结合起来,先保存文件再读取文件流计算MD5MD5:
当然这样做要对同一个流读取两次,显得不够低碳环保
此时可以看下DigestUtils源码,追其根溯其源可以看到:
也不是多高级的技术就是把整个InputStream拆成长度1024的字节数组逐个MD5。
同样也是讲InputStream拆成4096的字节数组逐个写到目标文件中。
那麼两者结合起来代码也就好写了:
// 计算MD5MD5,顺便写到文件