30个版本 (17个重大更新)
新增 0.17.1 | 2024年8月14日 |
---|---|
0.16.0 | 2024年8月2日 |
0.15.0 | 2024年7月27日 |
0.8.1 | 2024年3月18日 |
0.0.0-alpha.1 |
|
#490 in 数据结构
每月1,058次下载
在3个Crates中使用(通过pna)
250KB
6K SLoC
libpna
Rust的pna归档读写库。
# Cargo.toml
[dependencies]
libpna = "0.17"
读取归档
use libpna::{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 libpna::{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(())
}
许可证
本项目许可采用以下其中之一:
- 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
~163K SLoC