16 个版本
0.0.17 | 2024 年 4 月 3 日 |
---|---|
0.0.16 | 2023 年 12 月 22 日 |
0.0.15 | 2023 年 4 月 30 日 |
0.0.13 | 2023 年 3 月 26 日 |
0.0.3 | 2021 年 10 月 21 日 |
#23 in 异步
59,855 每月下载量
在 49 个 crates (35 直接) 中使用
270KB
3.5K SLoC
async_zip
异步 ZIP 存档读取/写入crate。
特性
- 基于
futures
的 IO 特性的基础实现。 - 基于
tokio
的 IO 特性的扩展实现。 - 支持存储、Deflate、bzip2、LZMA、zstd 和 xz 压缩方法。
- 各种不同的读取方法(seek、stream、文件系统、内存缓冲区等)。
- 支持使用数据描述符写入完整数据(u8 slices)或流。
- 对 ZIP64 读取和写入的初始支持。
- 旨在实现合理的 规范 兼容性。
安装 & 基本用法
[dependencies]
async_zip = { version = "0.0.17", features = ["full"] }
在 /examples
目录下可以找到(即将到来的)详尽的示例列表。
特性标志
full
- 启用所有以下特性。full-wasm
- 启用所有以下与 WASM 兼容的特性。chrono
- 启用通过chrono
解析日期的支持。tokio
- 启用对tokio
实现模块的支持。tokio-fs
- 启用对tokio::fs
读取模块的支持。deflate
- 启用对 Deflate 压缩方法的支持。bzip2
- 启用对 bzip2 压缩方法的支持。lzma
- 启用对 LZMA 压缩方法的支持。zstd
- 启用对 zstd 压缩方法的支持。xz
- 启用对 xz 压缩方法的支持。
读取
use tokio::{io::BufReader, fs::File};
use async_zip::tokio::read::seek::ZipFileReader;
...
let mut file = BufReader::new(File::open("./Archive.zip").await?);
let mut zip = ZipFileReader::with_tokio(&mut file).await?;
let mut string = String::new();
let mut reader = zip.reader_with_entry(0).await?;
reader.read_to_string_checked(&mut string).await?;
println!("{}", string);
写入
use async_zip::tokio::write::ZipFileWriter;
use async_zip::{Compression, ZipEntryBuilder};
use tokio::fs::File;
...
let mut file = File::create("foo.zip").await?;
let mut writer = ZipFileWriter::with_tokio(&mut file);
let data = b"This is an example file.";
let builder = ZipEntryBuilder::new("bar.txt".into(), Compression::Deflate);
writer.write_entry_whole(builder, data).await?;
writer.close().await?;
贡献
虽然我将继续维护这个 crate,但实现合理的规范兼容性对单个个人来说是一项巨大的任务。因此,贡献总是受到鼓励并受到赞赏。
没有贡献指南,但应考虑可读性,添加适当的注释,并使用 rustfmt
。
问题 & 支持
无论是想报告在使用此crate时遇到的问题,还是寻求一般性帮助/支持,请使用问题跟踪器,并尽可能提供详细信息(例如重现步骤)。
我会尽量在合理的时间内回应问题。
依赖关系
~0.7–9MB
~67K SLoC