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