tar 0.2.6

A Rust implementation of a TAR file reader and writer. This library does not currently handle compression, but it is abstract over all I/O readers and writers. Additionally, great lengths are taken to ensure that the entire contents are never required to be entirely resident in memory all at once.
docs.rs failed to build tar-0.2.6
Please check build logs and if you believe this is docs.rs' fault, report into this issue report.

tar-rs

Build Status

Documentation

A tar archive reading/writing library for Rust.

# Cargo.toml
[dependencies.tar]
git = "https://github.com/alexcrichton/tar-rs"

Reading an archive

# #![allow(unused_must_use, unstable)]
extern crate tar;

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

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

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

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

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

        // files also implement the Seek trait
        file.seek(SeekFrom::Current(0)).unwrap();
    }
}

Writing an archive

# #![allow(unused_must_use, unstable)]
extern crate tar;

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

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

    a.append("file1.txt", &mut File::open("file1.txt").unwrap());
    a.append("file2.txt", &mut File::open("file2.txt").unwrap());
    a.finish();
}

License

tar-rs is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses.

See LICENSE-APACHE, and LICENSE-MIT for details.