diff --git a/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java b/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java index 339de904f9e..16c2b5e5887 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java @@ -685,29 +685,21 @@ public static String calculateChecksum(String datafile, ChecksumType checksumTyp // from MD5Checksum.java public static String calculateChecksum(InputStream in, ChecksumType checksumType) { MessageDigest md = null; - try { + + try (BufferedInputStream buf = new BufferedInputStream(in, 32 * 1024)){ // Use "SHA-1" (toString) rather than "SHA1", for example. md = MessageDigest.getInstance(checksumType.toString()); - } catch (NoSuchAlgorithmException e) { - throw new RuntimeException(e); - } - - byte[] dataBytes = new byte[1024]; + byte[] dataBytes = new byte[1024]; - int nread; - try { - while ((nread = in.read(dataBytes)) != -1) { + int nread; + while ((nread = buf.read(dataBytes)) != -1) { md.update(dataBytes, 0, nread); } + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(e); } catch (IOException ex) { throw new RuntimeException(ex); - } finally { - try { - in.close(); - } catch (Exception e) { - } } - return checksumDigestToString(md.digest()); }