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
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
[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");
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");
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");
[dependencies]
sevenz-rust={version="0.3", features=["compress","aes256"]}
``` 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");
```
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");
```
Added Encrypted compression
Fixed numerical overflow
Change to use nt-time crate(#20)
Fixed write bitset bugs
Fixed bug while read files info
lzma-rust
lzma
to sub crate lzma-rust