3个不稳定版本
0.2.1 | 2023年6月30日 |
---|---|
0.2.0 | 2023年4月15日 |
0.1.0 | 2023年2月3日 |
#351 在 压缩
每月 下载 23 次
33KB
528 行
stream-unzip
这个库是一个为流式数据设计的最小化解压实现。
重要提示
Zip文件在文件末尾包含中心目录。此库按读取顺序解码Zip条目,不引用中心目录。
这适用于许多zip文件,但可能存在边缘情况。
用法
let path = "path/to/file.zip";
let mut file = tokio::fs::File::open(path).await.unwrap();
let mut buff: [u8; 1024] = [0; 1024];
let mut zip_reader = ZipReader::default();
while let Ok(num) = file.read(&mut buff).await {
if num == 0 {
break;
}
zip_reader.update(buff[..num].to_vec().into());
// Entries can be drained from the reader as they
// are completed.
let entries = zip_reader.drain_entries();
for entry in entries {
println!("entry: {}", entry.name());
// write to disk or whatever you need.
}
}
// Or read the whole file and deal with the entries
// at the end.
zip_reader.finish();
let entries = zip_reader.drain_entries();
运行示例
cargo run --example <zip file> <output directory>
贡献
已知此库尚不能解码的zip文件。它们位于 testdata/todo
目录中。当需要时,作者将解决这些问题,但你可以在任何时间自由贡献修复。如果有其他解压zip文件的问题,请包括一个最小化zip文件以重现问题。
许可
本项目受以下许可证保护
- Apache许可证,版本2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
依赖关系
~250KB