archive-reader

Crates.ioarchive-reader
lib.rsarchive-reader
version0.3.5
sourcesrc
created_at2023-01-22 16:53:17.210671
updated_at2023-02-27 23:00:20.262315
descriptionLibrary for reading files from archives
homepagehttps://github.com/YaxinCheng/archive-reader
repositoryhttps://github.com/YaxinCheng/archive-reader
max_upload_size
id765259
size31,058
Yaxin Cheng (YaxinCheng)

documentation

README

archive-reader

ArchiveReader is a library that wraps partial read functions from libarchive. It provides rustic interface over listing file names and reading given files within archives.

[dependencies]
archive-reader = "0.3"

Example

use archive_reader::Archive;
use archive_reader::error::Result;

fn main() -> Result<()> {
    let mut archive = Archive::open("some_archive.zip");
    let file_names = archive
                        .block_size(1024 * 1024)
                        .list_file_names()?
                        .collect::<Result<Vec<_>>>()?;
    let mut content = vec![];
    let _ = archive.read_file(&file_names[0], &mut content)?;
    println!("content={:?}", content);
    Ok(())
}

Features

  • lending_iter - Enables LendingIterator implementation, which avoids heap allocations for read_file_by_block functions.

Getting Started

This section talks about compiling this project

Prerequisites:

  • Rust 1.66.0 (May be compatible with lower versions, but I used 1.66.0)
  • Cargo
  • Git
  • libc
  • libarchive >= 3.2.0
    • Check it with command pkg-config --libs --cflags libarchive 'libarchive >= 3.2.0'

Compile

cd SOME_DIR
git clone git@github.com:YaxinCheng/archive-reader.git
cd archive-reader
cargo build --release

Commit count: 22

cargo fmt