1个不稳定版本
0.1.0 | 2021年8月28日 |
---|
#711 在 压缩
39KB
887 行
lz4jb
一个流式压缩/解压库,实现了来自lz4-java的LZ4BlockOutputStream
格式。
注意:此格式与标准的LZ4 Block格式不兼容。除非你有使用Java代码压缩的历史数据,否则请勿使用。
此仓库包含
lz4jb
:一个实现了Read
和Write
特质的库,- 一个命令行工具,用于压缩/解压此格式中的数据。参数与
gzip
类似,
压缩
Lz4BlockOutput
是一个实现了Write
特质的类型的包装器。
use lz4jb::Lz4BlockOutput;
use std::io::Write;
fn main() -> std::io::Result<()> {
let mut output = Vec::new(); // Vec<u8> implements the Write trait
Lz4BlockOutput::new(&mut output, 64)?
.write_all("...".as_bytes())?;
println!("{:?}", output);
Ok(())
}
解压
Lz4BlockInput
是一个实现了Read
特质的类型的包装器。
use lz4jb::Lz4BlockInput;
use std::io::Read;
const D: [u8; 24] = [
76, 90, 52, 66, 108, 111, 99, 107, 16, 3, 0, 0, 0, 3, 0, 0, 0, 82, 228, 119, 6, 46, 46, 46,
];
fn main() -> std::io::Result<()> {
let mut output = String::new();
Lz4BlockInput::new(&D[..]) // &[u8] implements the Read trait
.read_to_string(&mut output)?;
println!("{}", output);
Ok(())
}
命令行
在cli文件夹中,有一个使用此库进行压缩和解压的命令行工具。
$ cargo install cli
...
$ lz4jb -h
lz4jb 0.1.0
A compression tool which implements the LZ4BlockOutputStream format from https://github.com/lz4/lz4-java.
This is not compatible with the standard LZ4 Block format.
USAGE:
lz4jb [FLAGS] [OPTIONS] [file]...
FLAGS:
-z, --compress Compress. This is the default operation mode.
-d, --decompress Decompress. [aliases: uncompress]
-f, --force Force the compression or decompression.
-h, --help Prints help information
-k, --keep Keep (don't delete) input files during compression or decompression.
-l, --list Test the integrity of compressed files.
-c, --stdout Write output on standard output; keep original files unchanged.
-t, --test Test the integrity of compressed files.
-V, --version Prints version information
OPTIONS:
-b, --blocksize <blocksize> Block size for compression in bytes (between 64 and 33554432).
-S, --suffix <suffix> Append this suffix instead of the default .lz4 for compression.
ARGS:
<file>... Sets the input file to use.
许可证
请参阅许可证文件。
依赖项
~315KB