在Clojure中,如何从Web下载图像并将其保存到文件系统中?

Dan*_*lan 17 clojure

如何从Web下载图像并使用Clojure将其保存到文件系统?我知道图像网址,我知道我不能使用spitslurp执行此操作,因为它是二进制数据,而不是文本.

我想尽可能简单地做到这一点,理想情况下就像吐痰和啜食一样.也就是说,没有很多额外的行使用缓冲区或字节数组.我想在完成后关闭流,但我不在乎它是否效率低下.

Dav*_*ann 26

何智彤向我指出这个解决方案,它最适合我的目的:

 (defn copy [uri file]
  (with-open [in (io/input-stream uri)
              out (io/output-stream file)]
    (io/copy in out)))
Run Code Online (Sandbox Code Playgroud)

正如智通指出的那样,您需要(: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)))
Run Code Online (Sandbox Code Playgroud)