В Clojure, как вы загружаете изображение из Интернета и сохраняете его в своей файловой системе? - программирование

В Clojure, как вы загружаете изображение из Интернета и сохраняете его в своей файловой системе?

Как загрузить изображение из Интернета и сохранить его в своей файловой системе с помощью Clojure? Я знаю URL-адрес изображения, и я знаю, что я не могу использовать spit и slurp для этого, потому что это двоичные данные, а не текст.

Я хотел бы сделать это как можно проще, в идеале, как работают плевки и slurp. То есть без большого количества лишних строк с использованием буферов или байтовых массивов. Я хочу закрыть потоки, когда закончите, но мне все равно, если он неэффективен.

4b9b3361

Ответ 1

Zhitong He указал на это решение, которое работал лучше для моих целей:

 (defn copy [uri file]
  (with-open [in (io/input-stream uri)
              out (io/output-stream file)]
    (io/copy in out)))

Как отмечает Zhitong, вам понадобится (:require [clojure.java.io :as io]) в вашем пространстве имен, чтобы использовать это как закодированное. Кроме того, вы можете напрямую обратиться к clojure.java.io:

(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)))