kot*_*rak 14
ZipOutputStream
Java中有一个可以在Clojure中使用的库存.我不知道某个地方是否有图书馆.我使用普通的Java函数和一个小助手宏:
(defmacro ^:private with-entry
[zip entry-name & body]
`(let [^ZipOutputStream zip# ~zip]
(.putNextEntry zip# (ZipEntry. ~entry-name))
~@body
(flush)
(.closeEntry zip#)))
Run Code Online (Sandbox Code Playgroud)
显然,每个ZIP条目都描述了一个文件.
(require '[clojure.java.io :as io])
(with-open [file (io/output-stream "foo.zip")
zip (ZipOutputStream. file)
wrt (io/writer zip)]
(binding [*out* wrt]
(doto zip
(with-entry "foo.txt"
(println "foo"))
(with-entry "bar/baz.txt"
(println "baz")))))
Run Code Online (Sandbox Code Playgroud)
要压缩文件,您可能需要执行以下操作:
(with-open [output (ZipOutputStream. (io/output-stream "foo.zip"))
input (io/input-stream "foo")]
(with-entry output "foo"
(io/copy input output)))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3014 次 |
最近记录: |