#tar #archive #archive-format #zip #download #xz

arkiv

提供方便函数以操作各种存档(zip, tar.gz, tar.xz, ...)的库

7个版本 (重大更新)

0.7.0 2023年9月30日
0.6.0 2023年9月24日
0.5.1 2023年9月23日
0.4.0 2023年9月17日
0.1.0 2023年9月15日

#547 in 压缩

Download history 8/week @ 2024-03-14 4/week @ 2024-03-28 1/week @ 2024-04-04

每月下载 53次

MIT许可证

36KB
632 代码行

Arkiv

Crates.io Docs.rs Crates.io Crates.io

Build Build Clippy

Arkiv是一个便利库,通过单一一致的接口下载、打开、查询和提取各种格式的存档。

支持格式

  • sample.zip(需要zip功能)。
  • sample.tar(需要tar功能)。
  • sample.tgzsample.tar.gz(需要tar和gzip功能)。
  • sample.tar.xz(需要tar和xz功能)。
  • sample.tar.bz2(需要tar和bzip功能)。
  • sample.tar.zstdsample.tar.zst(需要tar和zstd功能)。

用法

use arkiv::{Result, Archive};

fn main() -> Result<()> {
    // open the archive from a local file
    let mut archive = arkiv::Archive::open("path/to/archive.tar.xz")?;

    // or download it over HTTP(S) - requires the `download` feature.
    #[cfg(feature="download")]
    let mut archive = {
        let url = "https://github.com/meuter/arkiv-rs/raw/main/tests/sample/sample.tar.zstd";
        arkiv::Archive::download(url)?
    };

    // iterate over entries
    for entry in archive.entries_iter()? {
        let entry = entry?;
        println!("{} {}", entry.size(), entry.path().display());
    }

    // extract the archive (perserves permission on unix targets)
    archive.unpack("/tmp/")?;

    Ok(())
}

依赖

~6–15MB
~208K SLoC