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());
}
So auf dem obigen Code erhalte ich folgende Ergebnisse:Zwei verschiedene MD5 am selben Eingang?
newFileName = e9f08a9c181551336e58119edd23109b.png
(richtig)
newFileName2 = d41d8cd98f00b204e9800998ecf8427e.png
(! Wrong)
Alle folgenden Ergebnisse würden auch wie die newFileName2 sein. Es spielt keine Rolle, was der korrekte newFileName ist, der newFileName2 wird immer den gleichen Wert wie oben gezeigt haben. Ich weiß wirklich nicht, in welchen Fällen dieses Problem?
Vielleicht verbraucht 'getMd5Digest' den Stream –
Beginnen Sie, um nachfolgende Aufrufe von' digestStream.getMd5Digest() 'zu vergleichen, erhalten Sie das gleiche Ergebnis? –