3个不稳定版本

0.2.1 2023年6月30日
0.2.0 2023年4月15日
0.1.0 2023年2月3日

#351压缩

每月 下载 23

Apache-2.0

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文件以重现问题。

许可

本项目受以下许可证保护

依赖关系

~250KB