A zip library for rust which supports reading and writing of simple ZIP files. Forked from https://crates.io/crates/zip to add more features and improve test coverage.
Supported compression formats:
Currently unsupported zip extensions:
With all default features:
toml
[dependencies]
zip_next = "0.10.0"
Without the default features:
toml
[dependencies]
zip_next = { version = "0.10.0", default-features = false }
The features available are:
aes-crypto
: Enables decryption of files which were encrypted with AES. Supports AE-1 and AE-2 methods.deflate
: Enables decompressing the deflate compression algorithm, which is the default for zip files.deflate-miniz
: Enables deflating files with the miniz_oxide
library (used when compression quality is 0..=9).deflate-zlib
: Enables deflating files with the zlib
library (used when compression quality is 0..=9).deflate-zlib-ng
: Enables deflating files with the zlib-ng
library (used when compression quality is 0..=9).
This is the fastest deflate
implementation available.deflate-zopfli
: Enables deflating files with the zopfli
library (used when compression quality is 10..=264). This
is the most effective deflate
implementation available.bzip2
: Enables the BZip2 compression algorithm.time
: Enables features using the time crate.chrono
: Enables converting last-modified zip_next::DateTime
to and from chrono::NaiveDateTime
.zstd
: Enables the Zstandard compression algorithm.By default aes-crypto
, deflate
, deflate-zlib-ng
, deflate-zopfli
, bzip2
, time
and zstd
are enabled.
Our current Minimum Supported Rust Version is 1.66.0. When adding features, we will follow these guidelines:
See the examples directory for: * How to write a file to a zip. * How to write a directory of files to a zip (using walkdir). * How to extract a zip file. * How to extract a single file from a zip. * How to read a zip from the standard input.
Fuzzing support is through cargo fuzz. To install cargo fuzz:
bash
cargo install cargo-fuzz
To list fuzz targets:
bash
cargo +nightly fuzz list
To start fuzzing zip extraction:
bash
cargo +nightly fuzz run fuzz_read
To start fuzzing zip creation:
bash
cargo +nightly fuzz run fuzz_write