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 |
|
#1234 在 文件系统
950 每月下载量
在 2 crates 中使用
260KB
6K SLoC
pna
一个为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 License, Version 2.0, (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
在您选择的情况下。
贡献
除非您明确说明,否则根据Apache-2.0许可证定义的任何有意提交到本项目的贡献,都将作为上述许可证双重许可,没有任何附加条款或条件。
依赖关系
~9MB
~159K SLoC