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

tar-rsl

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

2个版本

0.1.1 2024年3月4日
0.1.0 2024年3月4日

#179 in 压缩


2 个crate中使用

Apache-2.0

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许可证定义,您提交的任何有意包含在此项目中的贡献,将如上双授权,没有额外的条款或条件。

依赖项

~8–19MB
~253K SLoC