how to modify this code to cope with larger files (2 GB)? In Java - use small buffer and update(), in Clojure - how?
(defn md5 [io-factory]
(let [bytes'
(with-open [xin (clojure.java.io/input-stream io-factory)
xout (java.io.ByteArrayOutputStream.)]
(clojure.java.io/copy xin xout)
(.toByteArray xout))
algorithm (java.security.MessageDigest/getInstance "MD5")
raw (.digest algorithm bytes')]
(format "%032x" (BigInteger. 1 raw))))
; Execution error (OutOfMemoryError) at java.util.Arrays/copyOf (Arrays.java:3236).
; Java heap space
Thank you for your answers.