He estado luchando con la lectura de los contenidos de un directorio de recursos en mi proyecto lein. Ahora entiendo (después de hacerlo mal por un tiempo) a utilizar clojure.java.io/resource de sacar un recurso, porque simplemente utilizando el sistema de archivos no funciona cuando se empaqueta como un frasco:clojure: descomprimir un archivo comprimido almacenado como recurso
> (require '[clojure.java.io :as io])
> (def zipzip (.openStream (io/resource "zip.zip")))
Esto devuelve un BufferedInputStream
. Lo que quiero hacer es tomar este archivo zip y descomprimirlo en un directorio local. No puedo hacer un ZipFile
, pero puedo hacer un ZipInputStream
. Desafortunadamente, aunque puedo obtener ZipEntries
de esto, necesito un ZipFile
para leer el contenido del ZipEntry
. Puedo hacer esto:
> (-> zipzip ZipInputStream. .getNextEntry .getName)
Esto devuelve el nombre, pero no hay nada en la documentación API para obtener el contenido real de que ZipEntry
con el ZipInputStream
!
¿Cómo se escribe el contenido de este ZipInputStream
en un directorio local? (¡Eso también funciona cuando el código está empaquetado en un contenedor!)