Tôi đã gặp khó khăn khi đọc nội dung của thư mục tài nguyên trong dự án lein của tôi. Tôi hiểu ngay bây giờ (sau khi thực hiện sai một lúc) để sử dụng clojure.java.io/resource để lấy ra một tài nguyên, vì chỉ sử dụng hệ thống tệp không hoạt động khi nó được đóng gói dưới dạng jar:clojure: giải nén tệp zip được lưu trữ dưới dạng tài nguyên
> (require '[clojure.java.io :as io])
> (def zipzip (.openStream (io/resource "zip.zip")))
Trả lại số BufferedInputStream
. Những gì tôi muốn làm là lấy file zip này và giải nén nó vào một thư mục cục bộ. Tôi không thể thực hiện một số ZipFile
trong số đó, nhưng tôi có thể thực hiện một số ZipInputStream
. Thật không may, trong khi tôi có thể nhận được ZipEntries
trong số này, tôi cần một ZipFile
để thực sự đọc nội dung của ZipEntry
. Tôi có thể làm điều này:
> (-> zipzip ZipInputStream. .getNextEntry .getName)
này trả về tên, nhưng không có gì trong tài liệu api để có được nội dung thực tế của ZipEntry
rằng với ZipInputStream
là!
Làm cách nào để ghi nội dung từ số ZipInputStream
này vào thư mục địa phương? (cũng hoạt động khi mã được đóng gói vào một cái bình!)