我一直在努力阅读我的lein项目中资源目录的内容.我现在明白了(在做了一段时间之后做错了)使用clojure.java.io/resource来提取资源,因为当它被打包为jar时只使用文件系统不起作用:
> (require '[clojure.java.io :as io])
> (def zipzip (.openStream (io/resource "zip.zip")))
这会返回一个BufferedInputStream.我想要做的是获取此zip文件并将其解压缩到本地目录.我无法ZipFile摆脱它,但我能做出一个ZipInputStream.不幸的是,虽然我可以ZipEntries摆脱这个,但我需要一个ZipFile实际阅读的内容ZipEntry.我可以做这个:
> (-> zipzip ZipInputStream. .getNextEntry .getName)
这将返回的名字,但并没有什么API文档获取的实际内容ZipEntry与ZipInputStream!
如何将内容写入ZipInputStream本地目录?(当代码打包到jar中时也有效!)  
您可以ZipInputStream在获得下一个条目后阅读.使用条目中的大小信息来阅读内容.
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!\r\n\r\n"
| 归档时间: | 
 | 
| 查看次数: | 2169 次 | 
| 最近记录: |