#tar #tar-archive #encoding #file-reader #content #reader-writer

tokio-tar-up2date

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

1 个不稳定版本

0.3.1 2023年5月28日

#554 in 压缩

Download history 28/week @ 2024-03-13 111/week @ 2024-03-20 29/week @ 2024-03-27 19/week @ 2024-04-03 44/week @ 2024-04-10 47/week @ 2024-04-17 36/week @ 2024-04-24 17/week @ 2024-05-01 4/week @ 2024-05-08 3/week @ 2024-05-22 9/week @ 2024-05-29 8/week @ 2024-06-05 11/week @ 2024-06-12 92/week @ 2024-06-19 24/week @ 2024-06-26

每月136次下载

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 许可证定义,您提交给本项目以包含在内的任何贡献,均将根据上述条款双许可,不附加任何额外条款或条件。

依赖

~2–10MB
~93K SLoC