#解压 #7z #7zip #sevenz

sevenz-rust

用纯Rust编写的7z解压/压缩器

26个版本

0.6.1 2024年7月17日
0.5.4 2023年12月14日
0.5.3 2023年9月29日
0.4.3 2023年6月16日
0.1.5 2022年11月2日

#33压缩

Download history 2604/week @ 2024-05-04 3014/week @ 2024-05-11 2820/week @ 2024-05-18 2930/week @ 2024-05-25 2824/week @ 2024-06-01 2261/week @ 2024-06-08 2307/week @ 2024-06-15 2583/week @ 2024-06-22 2432/week @ 2024-06-29 2416/week @ 2024-07-06 3571/week @ 2024-07-13 3092/week @ 2024-07-20 2805/week @ 2024-07-27 2719/week @ 2024-08-03 2997/week @ 2024-08-10 2598/week @ 2024-08-17

11,527 每月下载次数
18 个crate(15个直接) 中使用

Apache-2.0

695KB
9K SLoC

包含 (DOS可执行文件,370KB) tests/resources/decompress_x86.exe

Crate Documentation

该项目是一个用纯Rust编写的7z压缩/解压器。
它非常受apache commons-compress项目的启发。

LZMA/LZMA2解码器和所有过滤器代码都是从tukaani xz for java迁移过来的

解压

支持的编解码器

  • BZIP2 (需要功能 'bzip2')
  • COPY
  • LZMA
  • LZMA2
  • ZSTD (需要功能 'zstd')

支持的过滤器

  • BCJ X86
  • BCJ PPC
  • BCJ IA64
  • BCJ ARM
  • BCJ ARM_THUMB
  • BCJ SPARC
  • DELTA
  • BJC2

使用

[dependencies]
sevenz-rust={version="0.2"}

将源文件 "data/sample.7z" 解压到目标路径 "data/sample"

sevenz_rust::decompress_file("data/sample.7z", "data/sample").expect("complete");

解压加密的7z文件

添加 'aes256' 功能

[dependencies]
sevenz-rust={version="0.2", features=["aes256"]}
sevenz_rust::decompress_file_with_password("path/to/encrypted.7z", "path/to/output", "password".into()).expect("complete");

多线程解压

查看 examples/mt_decompress

压缩

目前仅支持LZMA2方法。

[dependencies]
sevenz-rust={version="0.5.0", features=["compress"]}

使用辅助函数创建具有源路径的7z文件。

sevenz_rust::compress_to_path("examples/data/sample", "examples/data/sample.7z").expect("compress ok");

带AES加密

要求版本>=0.3.0

[dependencies]
sevenz-rust={version="0.5", features=["compress","aes256"]}

使用辅助函数创建具有源路径和密码的7z文件。

sevenz_rust::compress_to_path_encrypted("examples/data/sample", "examples/data/sample.7z", "password".into()).expect("compress ok");

高级

[dependencies]
sevenz-rust={version="0.5.0", features=["compress","aes256"]}

固态压缩

use sevenz_rust::*;

let mut sz = SevenZWriter::create("dest.7z").expect("create writer ok");

sz.push_source_path("path/to/compress", |_| true).expect("pack ok");

sz.finish().expect("compress ok");

压缩方法

带有加密和lzma2选项

use sevenz_rust::*;

let mut sz = SevenZWriter::create("dest.7z").expect("create writer ok");
sz.set_content_methods(vec![
    sevenz_rust::AesEncoderOptions::new("sevenz-rust".into()).into(),
    lzma::LZMA2Options::with_preset(9).into(),
]);
sz.push_source_path("path/to/compress", |_| true).expect("pack ok");

sz.finish().expect("compress ok");

变更日志

依赖项

~1.7–9.5MB
~89K SLoC