17个重大版本发布

0.17.0 2024年8月13日
0.15.0 2024年7月27日
0.8.0 2024年3月6日
0.5.0 2023年12月9日
0.0.0-alpha.1 2023年3月7日

#1234文件系统

Download history 194/week @ 2024-05-01 16/week @ 2024-05-08 8/week @ 2024-05-15 42/week @ 2024-05-22 20/week @ 2024-05-29 201/week @ 2024-06-05 49/week @ 2024-06-12 194/week @ 2024-06-19 112/week @ 2024-06-26 374/week @ 2024-07-03 40/week @ 2024-07-10 10/week @ 2024-07-17 223/week @ 2024-07-24 213/week @ 2024-07-31 332/week @ 2024-08-07 181/week @ 2024-08-14

950 每月下载量
2 crates 中使用

Apache-2.0 OR MIT

260KB
6K SLoC

pna

test Crates.io

一个为Rust编写的pna存档读写库。

# Cargo.toml
[dependencies]
pna = "0.17"

读取存档

use pna::{Archive, ReadOptions};
use std::fs::File;
use std::io::{self, copy, prelude::*};

fn main() -> io::Result<()> {
    let file = File::open("foo.pna")?;
    let mut archive = Archive::read_header(file)?;
    for entry in archive.entries_skip_solid() {
        let entry = entry?;
        let mut file = File::create(entry.header().path().as_path())?;
        let mut reader = entry.reader(ReadOptions::builder().build())?;
        copy(&mut reader, &mut file)?;
    }
    Ok(())
}

写入存档

use pna::{Archive, EntryBuilder, WriteOptions};
use std::fs::File;
use std::io::{self, prelude::*};

fn main() -> io::Result<()> {
    let file = File::create("foo.pna")?;
    let mut archive = Archive::write_header(file)?;
    let mut entry_builder = EntryBuilder::new_file(
        "bar.txt".into(),
        WriteOptions::builder().build(),
    )?;
    entry_builder.write(b"content")?;
    let entry = entry_builder.build()?;
    archive.add_entry(entry)?;
    archive.finalize()?;
    Ok(())
}

CLI

命令行用户界面可通过 此处 获取,您可以通过cargo安装或从源代码构建。

通过Cargo

cargo install portable-network-archive

从源代码(通过Cargo)

cargo install --git https://github.com/ChanTsune/Portable-Network-Archive.git portable-network-archive

许可证

本项目采用以下许可证之一:

在您选择的情况下。

贡献

除非您明确说明,否则根据Apache-2.0许可证定义的任何有意提交到本项目的贡献,都将作为上述许可证双重许可,没有任何附加条款或条件。

依赖关系

~9MB
~159K SLoC