You are viewing the documentation for a prerelease version. View Latest

Snappy

Snappy support needs no extra dependency. Compress4J provides two stream types, because they are different formats: the framed format (.sz, used for files and streams) and the raw format, a single block.

The raw format stores the uncompressed length first, so SnappyRawCompressor.builder(…​) requires it as an argument and rejects a negative value with an IllegalArgumentException.

Example Usage

Framed Snappy Compression
try (SnappyFramedCompressor snappyCompressor =
        SnappyFramedCompressor.builder(Path.of("example.sz")).build()) {
    snappyCompressor.write(Path.of("path/to/file.txt"));
}
Framed Snappy Decompression
try (SnappyFramedDecompressor snappyDecompressor =
        SnappyFramedDecompressor.builder(Path.of("example.sz")).build()) {
    snappyDecompressor.write(Path.of("path/to/file.txt"));
}
Raw Snappy Compression
Path source = Path.of("path/to/file.txt");
try (SnappyRawCompressor snappyCompressor = SnappyRawCompressor.builder(
                Path.of("example.snappy"), Files.size(source))
        .build()) {
    snappyCompressor.write(source);
}
Raw Snappy Decompression
try (SnappyRawDecompressor snappyDecompressor =
        SnappyRawDecompressor.builder(Path.of("example.snappy")).build()) {
    snappyDecompressor.write(Path.of("path/to/file.txt"));
}