#zip-archive #zip #archive #future #async

async_zip_futures

使用futures-rs的异步ZIP存档读写crate

1个不稳定版本

0.0.12 2023年3月10日

#608异步

Download history 1/week @ 2024-03-16 4/week @ 2024-03-30 61/week @ 2024-06-15 4/week @ 2024-06-22

65 每月下载量

MIT 许可证

82KB
1.5K SLoC

async_zip_futures

Crates.io Crates.io docs.rs GitHub Workflow Status (branch) GitHub

futures-rs驱动的异步ZIP存档读写crate。

rs-async-zip分叉。将tokio替换为futures-rs

特性

  • 支持存储压缩方法。
  • 支持使用数据描述符写入流。
  • 对ZIP64写入的初始支持。
  • 旨在实现合理的规范兼容性。

安装与基本用法

[dependencies]
async_zip_futures = { version = "0.0.12", features = ["full"] }

/examples目录下可以找到(即将发布的)详细的示例列表。

功能标志

  • full - 启用所有以下功能。
  • chrono - 启用通过chrono解析日期的支持。

写入

use async_zip_futures::{Compression, ZipEntryBuilder, write::ZipFileWriter, error::ZipError};
use futures::AsyncWriteExt;
use tokio::fs::File;
use tokio_util::compat::TokioAsyncReadCompatExt;
...

let mut file = File::create("foo.zip").await.unwrap().compat();
let mut writer = ZipFileWriter::new(&mut file);

let data = b"This is an example file.";
let builder = ZipEntryBuilder::new(String::from("bar.txt"), Compression::Stored);

let mut entry_writer = writer.write_entry_stream(builder).await.unwrap();
entry_writer.write_all(data).await.unwrap();
entry_writer.close().await.unwrap();
writer.close().await.unwrap();

依赖

~1.1–7MB
~44K SLoC