#lz4 #writer #minecraft #region #format #access #streaming

lz4-java-wrc

lz4jb 的分支,以确保它能够返回对底层写入器的访问权限(wrc = “write continue”)。lz4jb 是来自 https://github.com/lz4/lz4-java 的 LZ4BlockOutputStream 格式的Rust实现。这与标准的LZ4 Block格式不兼容,对于读取Minecraft区域文件很有用。

1个不稳定版本

0.2.0 2024年2月16日

#407压缩

MIT 许可证

58KB
1.5K SLoC

lz4-java-wrc

Crate API

这是一个接受写入器作为指针而不是消耗它的 lz4jb 的分支。

一个流式压缩/解压缩库,实现了来自 lz4-javaLZ4BlockOutputStream 格式。

注意:此格式与标准的 LZ4 Block格式 不兼容。Minecraft 1.20.5 lz4块压缩格式是一个使用此格式的例子。

此仓库包含

  • lz4_java_wrc:一个实现 ReadWrite 特性的库,

用法

将其添加到您的 Cargo.toml 中

[dependencies]
lz4-java-wrc = "0.2.0"

压缩

Lz4BlockOutput 是围绕实现 Write 特性的类型的包装。

use lz4_java_wrc::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 lz4_java_wrc::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(())
}

许可证

查看 LICENSE 文件。

依赖项

~140–490KB