【发布时间】:2017-01-12 12:44:29
【问题描述】:
try (InputStream is = item.getInputStream())
{
final MD5DigestCalculatingInputStream digestStream = new MD5DigestCalculatingInputStream(is);
final byte[] bytes = IOUtils.toByteArray(digestStream);
final String newFileName = Hex.encodeHexString(digestStream.getMd5Digest()) + "."
+ FilenameUtils.getExtension(item.getName());
final String newFileName2 = Hex.encodeHexString(digestStream.getMd5Digest()) + "."
+ FilenameUtils.getExtension(item.getName());
}
所以在上面的代码中我得到以下结果:
newFileName = e9f08a9c181551336e58119edd23109b.png(正确)
newFileName2 = d41d8cd98f00b204e9800998ecf8427e.png(错误!)
以下所有结果也将类似于 newFileName2。正确的 newFileName 是什么并不重要,newFileName2 将始终与上面显示的值相同。真不知道这个问题是什么情况?
【问题讨论】:
-
可能
getMd5Digest正在消费流 -
开始比较
digestStream.getMd5Digest()的后续调用,结果一样吗?
标签: java inputstream md5