80个版本 (14个稳定版)
新版本 2.2.0 | 2024年8月20日 |
---|---|
2.1.6 | 2024年7月31日 |
2.1.3 | 2024年6月5日 |
1.3.1 |
|
0.0.3 | 2014年11月22日 |
#1 in 压缩
2,173,240 每月下载量
在 2,143 个crate中使用 (945直接使用)
405KB
9K SLoC
zip
信息
Rust的zip库,支持简单ZIP文件的读写。以前托管在https://github.com/zip-rs/zip2。
支持的压缩格式
- 存储(即无压缩)
- deflate
- deflate64(仅解压)
- bzip2
- zstd
- lzma(仅解压)
- xz(仅解压)
当前不支持的ZIP扩展
- 多磁盘
特性
可用的特性有
aes-crypto
:启用使用AES加密的文件的解密。支持AE-1和AE-2方法。deflate
:启用压缩和解压缩未指定实现(可能在未来版本中更改)的deflate压缩算法,这是zip文件的默认值。支持1..=264的压缩质量。deflate-flate2
:与任何启用后端的flate2
功能标志结合使用,以支持1..=9的质量的deflate压缩。deflate-zopfli
:启用使用zopfli
库压缩文件(在压缩质量为10..=264时使用)。这是最有效的deflate
实现之一,但也是最慢的。deflate64
:启用deflate64压缩算法。仅支持解压。lzma
:启用LZMA压缩算法。仅支持解压。bzip2
:启用BZip2压缩算法。time
:启用使用time crate的功能。chrono
:启用将zip::DateTime
转换为和从chrono::NaiveDateTime
。zstd
:启用Zstandard压缩算法。
默认情况下,已启用 aes-crypto
、bzip2
、deflate
、deflate64
、lzma
、time
和 zstd
。
以下特性标记已弃用
deflate-miniz
:使用flate2
的默认后端进行压缩。目前与deflate
相同。
MSRV(最低支持的 Rust 版本)
我们当前的最低支持 Rust 版本是 1.73。当添加功能时,我们将遵循以下指南
- 我们将始终支持最新的四个次要版本。这为您提供了 6 个月的编译器升级窗口。
- 任何对 MSRV 的更改都将伴随着 小版本号 的增加。
示例
有关如何将文件写入 zip 的示例,请参阅 示例目录
- 如何将文件写入 zip。
- 如何将文件目录写入 zip(使用 walkdir)。
- 如何解压 zip 文件。
- 如何从 zip 中解压单个文件。
- 如何从标准输入读取 zip。
- 如何将目录追加到现有存档。
模糊测试
模糊测试支持通过 cargo fuzz 实现。要安装 cargo fuzz
cargo install cargo-fuzz
列出模糊测试目标
cargo +nightly fuzz list
开始模糊测试 zip 解压
cargo +nightly fuzz run fuzz_read
开始模糊测试 zip 创建
cargo +nightly fuzz run fuzz_write
依赖项
~5–7.5MB
~128K SLoC