archive.cr
provides libarchive bindings for Crystal. Only a small subset of the libarchive functions are implemented, and currently only extraction is supported.
-
Add the dependency to your
shard.yml
:dependencies: archive: github: hkalexling/archive.cr
-
Run
shards install
require "archive"
# Extract all entries
Archive::File.open "file.zip" do |f|
f.entries.map do |e|
# Skip non-file entries
next unless e.info.file?
filename = e.filename
size = e.size
file = File.new filename, "wb"
file.write e.read
end
end
# Extract a specific entry
Archive::File.open "file.zip" do |f|
file = File.new "img.jpg", "wb"
file.write f.read_entry "img.jpg"
end