clojure:распаковка zip-файла, хранящегося в качестве ресурса

Я изо всех сил пытался прочитать содержимое каталога ресурсов в моем 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в локальный каталог? (Это также работает, когда код упакован в банку!)

6
задан prismofeverything 17 April 2012 в 08:53
поделиться