All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.XZSeekEncDemo Maven / Gradle / Ivy

The newest version!
/*
 * XZSeekEncDemo
 *
 * Author: Lasse Collin 
 *
 * This file has been put into the public domain.
 * You can do whatever you want with this file.
 */

import java.io.*;
import org.tukaani.xz.*;

/**
 * Compresses a single file from standard input to standard ouput into
 * a random-accessible .xz file.
 * 

* Arguments: [preset [block size]] *

* Preset is an LZMA2 preset level which is an integer in the range [0, 9]. * The default is 6. *

* Block size specifies the amount of uncompressed data to store per * XZ Block. The default is 1 MiB (1048576 bytes). Bigger means better * compression ratio. Smaller means faster random access. */ class XZSeekEncDemo { public static void main(String[] args) throws Exception { LZMA2Options options = new LZMA2Options(); if (args.length >= 1) options.setPreset(Integer.parseInt(args[0])); int blockSize = 1024 * 1024; if (args.length >= 2) blockSize = Integer.parseInt(args[1]); options.setDictSize(Math.min(options.getDictSize(), Math.max(LZMA2Options.DICT_SIZE_MIN, blockSize))); System.err.println("Encoder memory usage: " + options.getEncoderMemoryUsage() + " KiB"); System.err.println("Decoder memory usage: " + options.getDecoderMemoryUsage() + " KiB"); System.err.println("Block size: " + blockSize + " B"); XZOutputStream out = new XZOutputStream(System.out, options); byte[] buf = new byte[8192]; int left = blockSize; while (true) { int size = System.in.read(buf, 0, Math.min(buf.length, left)); if (size == -1) break; out.write(buf, 0, size); left -= size; if (left == 0) { out.endBlock(); left = blockSize; } } out.finish(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy