| /* | |
| * LZMAEncDemo | |
| * | |
| * Author: Lasse Collin <lasse.collin@tukaani.org> | |
| * | |
| * 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 | |
| * the .lzma file format. | |
| * <p> | |
| * NOTE: For most purposes, .lzma is a legacy format and usually you should | |
| * use .xz instead. | |
| * <p> | |
| * Two optional arguments are supported: | |
| * <ol> | |
| * <li>LZMA preset level which is an integer in the range [0, 9]. | |
| * The default is 6.</li> | |
| * <li>Uncompressed size of the input as bytes.<li> | |
| * </ol> | |
| */ | |
| class LZMAEncDemo { | |
| public static void main(String[] args) throws Exception { | |
| LZMA2Options options = new LZMA2Options(); | |
| long inputSize = -1; | |
| if (args.length >= 1) | |
| options.setPreset(Integer.parseInt(args[0])); | |
| if (args.length >= 2) | |
| inputSize = Long.parseLong(args[1]); | |
| System.err.println("Encoder memory usage: " | |
| + options.getEncoderMemoryUsage() + " KiB"); | |
| System.err.println("Decoder memory usage: " | |
| + options.getDecoderMemoryUsage() + " KiB"); | |
| // LZMAOutputStream writes one byte at a time. It helps a little, | |
| // especially in the fastest presets, to use BufferedOutputStream. | |
| OutputStream out = new BufferedOutputStream(System.out); | |
| LZMAOutputStream encoder = new LZMAOutputStream(out, options, | |
| inputSize); | |
| byte[] buf = new byte[8192]; | |
| int size; | |
| while ((size = System.in.read(buf)) != -1) | |
| encoder.write(buf, 0, size); | |
| encoder.finish(); | |
| out.flush(); | |
| } | |
| } |