#tar-archive #tar #reader-writer #async-io #file-reader #encoding

tokio-tar

A Rust 实现的异步 TAR 文件读取器和写入器。此库目前不处理压缩,但它抽象了所有 I/O 读取器和写入器。此外,还尽力确保整个内容不需要一次性完全驻留在内存中。

4 个版本 (2 个破坏性更改)

0.3.1 2023年7月14日
0.3.0 2021年5月18日
0.2.0 2020年3月15日
0.1.0 2020年1月9日

#62解析器实现

Download history 16620/week @ 2024-03-14 20234/week @ 2024-03-21 20219/week @ 2024-03-28 22772/week @ 2024-04-04 18533/week @ 2024-04-11 19023/week @ 2024-04-18 19387/week @ 2024-04-25 20814/week @ 2024-05-02 21746/week @ 2024-05-09 22516/week @ 2024-05-16 20554/week @ 2024-05-23 23394/week @ 2024-05-30 23527/week @ 2024-06-06 21766/week @ 2024-06-13 21975/week @ 2024-06-20 17962/week @ 2024-06-27

90,033 每月下载量
用于 45 个 crate (27 直接)

MIT/Apache

150KB
3K SLoC

tokio-tar

异步 Rust 的 tar 归档读写库。


基于优秀的 tar-rs

读取归档

use tokio::io::stdin;
use tokio::prelude::*;

use tokio_tar::Archive;

fn main() {
    tokio::runtime::Runtime::new().unwrap().block_on(async {
        let mut ar = Archive::new(stdin());
        let mut entries = ar.entries().unwrap();
        while let Some(file) = entries.next().await {
            let f = file.unwrap();
            println!("{}", f.path().unwrap().display());
        }
    });
}

写入归档

use tokio::fs::File;
use tokio_tar::Builder;

fn main() {
    tokio::runtime::Runtime::new().unwrap().block_on(async {
        let file = File::create("foo.tar").await.unwrap();
        let mut a = Builder::new(file);

        a.append_path("README.md").await.unwrap();
        a.append_file("lib.rs", &mut File::open("src/lib.rs").await.unwrap())
            .await
            .unwrap();
    });
}

许可证

本项目受以下许可证之一授权:

您可选择其中之一。

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交的任何贡献,均应按上述方式双重许可,无需任何额外条款或条件。

依赖关系

~4–13MB
~160K SLoC