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

krata-tokio-tar

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

1 个不稳定版本

0.4.0 2024年3月30日

#155压缩

Download history 567/week @ 2024-04-20 456/week @ 2024-04-27 465/week @ 2024-05-04 562/week @ 2024-05-11 337/week @ 2024-05-18 176/week @ 2024-05-25 460/week @ 2024-06-01 191/week @ 2024-06-08 402/week @ 2024-06-15 1121/week @ 2024-06-22 1194/week @ 2024-06-29 1708/week @ 2024-07-06 2739/week @ 2024-07-13 2161/week @ 2024-07-20 2065/week @ 2024-07-27 2158/week @ 2024-08-03

9,649 每月下载量
3 个crate中使用 (直接使用2个)

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
~159K SLoC