In Clojure, how do you download an image from the web and save it to your file system?
clojure
Solution
Zhitong He pointed me to this solution, which worked best for my purposes:
(defn copy [uri file]
(with-open [in (io/input-stream uri)
out (io/output-stream file)]
(io/copy in out)))
As Zhitong notes, you'll need `(:require [clojure.java.io :as io])` in your namespace to use this as coded. Alternatively, you could refer to clojure.java.io directly:
(defn copy-uri-to-file [uri file]
(with-open [in (clojure.java.io/input-stream uri)
out (clojure.java.io/output-stream file)]
(clojure.java.io/copy in out)))
Problem
How do you download an image from the web and save it to your file system using Clojure? I know the image url and I'm aware that I can't use `spit` and `slurp` to do this because it's binary data, not text. I'd like to do this as simply as possible, ideally like how spit and slurp work. That is, without a lot of extra lines using buffers or byte arrays. I want to close the streams when I'm done, but I don't care if it's inefficient.