13
如何使用Clojure從網上下載圖像並將其保存到文件系統?我知道圖片網址,我知道我不能使用spit
和slurp
來做到這一點,因爲它是二進制數據,而不是文本。在Clojure中,你如何從網上下載圖像並保存到文件系統?
我希望儘可能簡單地做到這一點,理想情況下就像spit和slurp是如何工作的。也就是說,沒有大量使用緩衝區或字節數組的額外行。我想在完成後關閉流,但我不在乎效率低下。
如何使用Clojure從網上下載圖像並將其保存到文件系統?我知道圖片網址,我知道我不能使用spit
和slurp
來做到這一點,因爲它是二進制數據,而不是文本。在Clojure中,你如何從網上下載圖像並保存到文件系統?
我希望儘可能簡單地做到這一點,理想情況下就像spit和slurp是如何工作的。也就是說,沒有大量使用緩衝區或字節數組的額外行。我想在完成後關閉流,但我不在乎效率低下。
智通他pointed我this solution,其工作最適合我的目的:
(defn copy [uri file]
(with-open [in (io/input-stream uri)
out (io/output-stream file)]
(io/copy in out)))
由於智通所指出的,你需要在你的命名空間(: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)))
[這個問題(指重複http://stackoverflow.com/questions/11321264/saving-an-image-form-clj-http-請求到文件)。通過IRC回答。 – arrdem 2013-03-26 03:14:26
我要在這裏留下這個,以便Google可以更好地找到它。我首先做了谷歌搜索,找不到答案。 – 2013-03-26 03:40:28
儘管在實踐中這兩個問題的解決方案几乎完全相同,但這個問題更爲廣泛,因爲它不涉及'clj-http'來獲取文件。因此我認爲它不應該作爲一個重複來關閉。 – 2013-10-10 19:57:27