#zip-archive #zip #archive

binstall-zip

支持读取和写入 zip 文件的库

2 个版本

0.6.4 2022 年 11 月 8 日
0.6.3 2022 年 9 月 12 日

#600 in 压缩

24 个月下载量
用于 reveal-yaml

MIT 许可证

190KB
4K SLoC

包含 (Zip 文件,2KB) tests/data/invalid_offset.zip,(Zip 文件,1KB) tests/data/aes_archive.zip,(Zip 文件,1KB) tests/data/files_and_dirs.zip,(Zip 文件,1KB) tests/data/invalid_offset2.zip,(Zip 文件,1KB) tests/data/mimetype.zip

zip-rs

此 zip 分支不再维护,请使用上游 zip-rs/zip 代替

Build Status Crates.io version Discord

文档

警告:此版本的 ZIP 库不会添加新功能,只有发现重大安全问题时才会更新。

信息

这是一个 Rust 的 zip 库,支持简单 ZIP 文件的读取和写入。

支持的压缩格式

  • 存储(即无压缩)
  • deflate
  • bzip2
  • zstd

目前不支持的 zip 扩展

  • 加密
  • 多磁盘

使用

使用所有默认功能

[dependencies]
zip = "0.6.2"

不使用默认功能

[dependencies]
zip = { version = "0.6.2", default-features = false }

可用的功能有

  • aes-crypto:启用使用 AES 加密的文件的解密。支持 AE-1 和 AE-2 方法。
  • deflate:启用 deflate 压缩算法,这是 zip 文件默认的。
  • bzip2:启用 BZip2 压缩算法。
  • time:启用使用 time 库的功能。
  • zstd:启用 Zstandard 压缩算法。

所有这些都是默认启用的。

MSRV

我们当前的最低支持 Rust 版本是 1.57.0。当添加功能时,我们将遵循以下指南

  • 我们将始终支持最新的四个次要 Rust 版本。这为您提供了一个 6 个月的窗口来升级您的编译器。
  • 任何对 MSRV 的更改都将伴随 次级 版本的增加
    • 当库是预 1.0 版时,这将是一个对修补版本的改变。

示例

请参阅示例目录以了解

  • 如何将文件写入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

依赖项

~5MB
~82K SLoC