java 大文件 md5_使用Java为大文件生成MD5非常慢
我用nio重写你的代码,代码有点像下面:
private static String generateMD5(FileInputStream inputStream){
if(inputStream==null){
return null;
}
MessageDigest md;
try {
md = MessageDigest.getInstance("MD5");
FileChannel channel = inputStream.getChannel();
ByteBuffer buff = ByteBuffer.allocate(2048);
while(channel.read(buff) != -1)
{
buff.flip();
md.update(buff);
buff.clear();
}
byte[] hashValue = md.digest();
return new String(hashValue);
}
catch (NoSuchAlgorithmException e)
{
return null;
}
catch (IOException e)
{
return null;
}
finally
{
try {
if(inputStream!=null)inputStream.close();
} catch (IOException e) {
}
}
}在我的机器上,为大文件生成md5代码大约需要30秒,当然我也会测试你的代码,结果表明nio不会提高程序的性能。
然后,我试图分别得到io和md5的时间,统计数据表明慢文件io是瓶颈,因为大约有5/6的时间用于io。
通过使用@Sticky提到的Fast MD5库,生成md5代码只需15秒,这一改进非常显着。
总结
以上是生活随笔为你收集整理的java 大文件 md5_使用Java为大文件生成MD5非常慢的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: java 实例变量初始化_java学习之
- 下一篇: java 填充字符串_如何用Java填充