#archive #libarchive #data #api #format #slim

simple-archive

基于libarchive简化Rust中处理压缩归档的精简库

3个版本 (重大变更)

0.3.0 2024年8月13日
0.2.0 2024年8月13日
0.1.0 2024年7月17日

#166压缩

Download history 109/week @ 2024-07-15 247/week @ 2024-08-12

每月 248 次下载

MIT 许可协议

105KB
3K SLoC

simple-archive

simple-archive 是处理压缩归档和文件流的简单可能的crate。

底层使用libarchive库来处理数据。存在从libarchive库到直接ffi转换,也可以使用,但库的目的是在libarchive之上提供更简单的Rust API。


依赖项

libarchive 必须安装。在编写本文时,与库一起测试的唯一版本是3.7.4。旧版本可能也可以正常工作,但尚未经过测试。

由于 libarchive 是其他库的伞形库,因此根据要处理的数据格式,系统还应该安装其他库。

功能

  • 支持与libarchive兼容的文件格式读取
  • 在libarchive支持的输出格式文件上使用过滤器
  • 使用Read+Seek特质直接压缩源数据对象
  • 从归档数据中提取对象。

压缩文件

use std::fs::File;

let output = File::create("tests/fixtures_out/compressed.tar.gz").unwrap();
let mut a = ArchiveWriter::new(output).unwrap();
a.set_output_targz().unwrap();
a.open().unwrap(); 
a.add_file("/path/to/your/file", "path/inside/output/archive").unwrap();

解压缩文件

use std::fs::File;

let input = File::open("tests/fixtures_out/compressed.tar.gz").unwrap();
let mut a = ArchiveReader::new(output).unwrap();
...

许可协议

许可协议如下

依赖项

~0.3–0.8MB
~19K SLoC