80个版本 (14个稳定版)

新版本 2.2.0 2024年8月20日
2.1.6 2024年7月31日
2.1.3 2024年6月5日
1.3.1 2024年5月22日
0.0.3 2014年11月22日

#1 in 压缩

Download history 405225/week @ 2024-05-04 444718/week @ 2024-05-11 448902/week @ 2024-05-18 432199/week @ 2024-05-25 481585/week @ 2024-06-01 481698/week @ 2024-06-08 444807/week @ 2024-06-15 453347/week @ 2024-06-22 445615/week @ 2024-06-29 494479/week @ 2024-07-06 487116/week @ 2024-07-13 524530/week @ 2024-07-20 512890/week @ 2024-07-27 525861/week @ 2024-08-03 559290/week @ 2024-08-10 484287/week @ 2024-08-17

2,173,240 每月下载量
2,143 个crate中使用 (945直接使用)

MIT 许可证

405KB
9K SLoC

zip

Build Status Crates.io version

文档

信息

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-cryptobzip2deflatedeflate64lzmatimezstd

以下特性标记已弃用

  • 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