clojure: unzipping a zip file stored as a resource
我一直在努力读取我的lein项目中资源目录的内容。我现在理解(一段时间做错了之后)使用clojure.java.io/resource提取资源,因为当将文件系统打包为jar时,仅使用文件系统不起作用:
1 2 | > (require '[clojure.java.io :as io]) > (def zipzip (.openStream (io/resource"zip.zip"))) |
这将返回一个
1 | > (-> zipzip ZipInputStream. .getNextEntry .getName) |
这将返回名称,但是api文档中没有任何内容可以使用
如何将
获得下一个条目后,您可以简单地从
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | user=> (import 'java.util.zip.ZipInputStream) java.util.zip.ZipInputStream user=> (def zs (ZipInputStream. (io/input-stream"foo.zip"))) #'user/zs user=> (def ze (.getNextEntry zs)) #'user/ze user=> (.getName ze) "foo.txt" user=> (.getSize ze) 21 user=> (let [bytes (byte-array 21)] (.read zs bytes 0 21) (String. bytes"UTF-8")) "Das ist ein Test!\ \ \ \ " |