Ho avuto difficoltà a leggere il contenuto di una directory di risorse nel mio progetto lein. Capisco ora (dopo facendo male per un po ') da utilizzare clojure.java.io/resource per tirare fuori una risorsa, perché proprio utilizzando il file system non funziona quando viene confezionato come un vaso:clojure: decompressione di un file zip memorizzato come risorsa
> (require '[clojure.java.io :as io])
> (def zipzip (.openStream (io/resource "zip.zip")))
Restituisce un BufferedInputStream
. Quello che voglio fare è prendere questo file zip e decomprimerlo in una directory locale. Non riesco a creare un ZipFile
, ma posso creare un ZipInputStream
. Purtroppo, mentre posso ottenere ZipEntries
di questo, ho bisogno di un ZipFile
per leggere effettivamente il contenuto dello ZipEntry
. Posso fare questo:
> (-> zipzip ZipInputStream. .getNextEntry .getName)
Ciò restituisce il nome, ma non c'è nulla nella documentazione API per ottenere il contenuto effettivo di che ZipEntry
con la ZipInputStream
!
Come si scrive il contenuto da questo ZipInputStream
in una directory locale? (Che funziona anche quando il codice è confezionato in un barattolo!)