6 个版本

0.4.0 2023年2月25日
0.3.5 2023年2月27日
0.2.3 2023年2月19日
0.2.1 2023年1月26日
0.1.0 2023年1月22日

#190 in 压缩


用于 comic-repack

MIT 许可证

30KB
615 代码行

archive-reader

ArchiveReader 是一个库,它封装了 libarchive 的部分读取函数。它提供了对列文件名和读取归档中给定文件的 rustic 接口。

[dependencies]
archive-reader = "0.3"

示例

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(())
}

特性

  • lending_iter - 启用 LendingIterator 实现,避免为 read_file_by_block 函数进行堆分配。

入门指南

本节介绍了如何编译此项目

先决条件

  • Rust 1.66.0(可能兼容较低版本,但我使用了 1.66.0)
  • Cargo
  • Git
  • libc
  • libarchive >= 3.2.0
    • 使用命令 pkg-config ----cflags libarchive 'libarchive >= 3.2.0' 进行检查

编译

cd SOME_DIR
git clone [email protected]:YaxinCheng/archive-reader.git
cd archive-reader
cargo build --release

依赖项

~0.4–1MB
~22K SLoC