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

标签 clojure

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

我想尽可能简单地做到这一点,最好就像吐和吸吮的工作原理一样。也就是说,无需使用缓冲区或字节数组进行大量额外的行。我想在完成后关闭流,但我不在乎它是否效率低下。

最佳答案

何志同pointed我给this solution ,这最适合我的目的:

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

关于clojure - 在 Clojure 中,如何从网络下载图像并将其保存到文件系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15628682/

相关文章:

math - Clojure 中的任意精度取幂

maven - Leiningen 是否读取 .m2/settings.xml 中的 maven 设置?

sql - 如何让 postgres 忽略带有重复键的插入但继续

Clojure 如何混合/合并两个 map

Haskell 的 foldr/l 和 Clojure 的 reduce

clojure - 如何在luminus或使用friend中编写登录功能?

java - 使 Java 类在 Clojure 中作为序列工作

clojure - 使用 clojure 的 stm 作为全局状态是否被认为是一个好的实践?

clojure - Leiningen 和 Clojure 依赖项

clojure - 构建 LISP 机器需要多少原语?十、七还是五?