Crate Documentation

This project is a 7z compressor/decompressor written in pure rust.
And it's very much inspired by the apache commons-compress project.

The LZMA/LZMA2 decoder and all filters code was ported from tukaani xz for java

Decompression

Supported codecs: - [x] BZIP2 (require feature 'bzip2') - [x] COPY - [x] LZMA - [x] LZMA2 - [x] ZSTD (require feature 'zstd')

Supported filters: - [x] BCJ X86 - [x] BCJ PPC - [x] BCJ IA64 - [x] BCJ ARM - [x] BCJ ARM_THUMB - [x] BCJ SPARC - [x] DELTA

Usage

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

Decompress source file "data/sample.7z" to dest path "data/sample" rust sevenz_rust::decompress_file("data/sample.7z", "data/sample").expect("complete");

Decompress a encrypted 7z file

Add 'aes256' feature [dependencies] sevenz-rust={version="0.2", features=["aes256"]}

rust sevenz_rust::decompress_file_with_password("path/to/encrypted.7z", "path/to/output", "password".into()).expect("complete");

Compression

Currently only support LZMA2 method.

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

Use the helper function to create a 7z file with source path. rust sevenz_rust::compress_to_path("examples/data/sample", "examples/data/sample.7z").expect("compress ok");

With AES encryption

require version>=0.3.0 [dependencies] sevenz-rust={version="0.3", features=["compress","aes256"]}

Use the helper function to create a 7z file with source path and password. rust sevenz_rust::compress_to_path_encrypted("examples/data/sample", "examples/data/sample.7z", "password".into()).expect("compress ok");

Advance

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

Solid compression

``` use sevenz_rust::*;

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

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

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

```

Compression methods

with encryption and lzma2 options

``` use sevenz_rust::*;

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

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

```

Changelog

0.4.3 - 2023-0616

0.4.1 - 2023-06-07

0.4.0 - 2023-06-03 - Solid compression

0.3.0 - 2023-06-02 - Encrypted compression

0.2.9 - 2023-03-16

0.2.8 - 2023-03-06

0.2.6 - 2023-02-23

0.2.4 - 2023-02-16

0.2.3 - 2023-02-07

0.2.2 - 2023-01-31 - Create sub crate lzma-rust

0.2.0 - 2023-01-08 - Added compression supporting

0.1.5 - 2022-11-01 - Encrypted 7z files decompression supported

0.1.4 - 2022-09-20 - Replace lzma/lzma2 decoder

0.1.3 - 2022-09-18 - add more bcj filters

0.1.2 - 2022-09-14 - bcj x86 filter supported

0.1.1 - 2022-08-10 - Modify decompression function

0.1.0 - 2022-08-10 - Decompression