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

tar

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

75 个版本

0.4.41 2024年6月4日
0.4.40 2023年8月7日
0.4.39 2023年7月13日
0.4.38 2021年12月14日
0.1.0 2014年11月27日

#2 in 压缩

Download history 465589/week @ 2024-05-03 493980/week @ 2024-05-10 495051/week @ 2024-05-17 483512/week @ 2024-05-24 541415/week @ 2024-05-31 555671/week @ 2024-06-07 556421/week @ 2024-06-14 553987/week @ 2024-06-21 527323/week @ 2024-06-28 537595/week @ 2024-07-05 579470/week @ 2024-07-12 595356/week @ 2024-07-19 596820/week @ 2024-07-26 586420/week @ 2024-08-02 636746/week @ 2024-08-09 530010/week @ 2024-08-16

2,459,956 每月下载量
用于 2,567 个 Crates (910 直接)

MIT/Apache

155KB
3K SLoC

tar-rs

文档

Rust 的 tar 归档读写库。

# Cargo.toml
[dependencies]
tar = "0.4"

读取归档

extern crate tar;

use std::io::prelude::*;
use std::fs::File;
use tar::Archive;

fn main() {
    let file = File::open("foo.tar").unwrap();
    let mut a = Archive::new(file);

    for file in a.entries().unwrap() {
        // Make sure there wasn't an I/O error
        let mut file = file.unwrap();

        // Inspect metadata about the file
        println!("{:?}", file.header().path().unwrap());
        println!("{}", file.header().size().unwrap());

        // files implement the Read trait
        let mut s = String::new();
        file.read_to_string(&mut s).unwrap();
        println!("{}", s);
    }
}

写入归档

extern crate tar;

use std::io::prelude::*;
use std::fs::File;
use tar::Builder;

fn main() {
    let file = File::create("foo.tar").unwrap();
    let mut a = Builder::new(file);

    a.append_path("file1.txt").unwrap();
    a.append_file("file2.txt", &mut File::open("file3.txt").unwrap()).unwrap();
}

许可证

此项目受以下任何一个许可证的约束

由您选择。

贡献

除非您明确声明,否则您提交给此项目的任何有意贡献,根据 Apache-2.0 许可证定义,将按照上述方式双重许可,不附加任何额外条款或条件。

依赖

~1.5–10MB
~111K SLoC