/*
* Copyright (C) 2009 Archie L. Cobbs. All rights reserved.
*
* $Id: LZMAByteArrayCompressor.java 2 2009-12-17 02:39:56Z archie.cobbs $
*/
package org.dellroad.lzma.client;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
* LZMA compressor for {@code byte[]} arrays.
*/
public class LZMAByteArrayCompressor extends LZMACompressor {
private final ByteArrayOutputStream output;
/**
* Construct an encoder using the {@link #DEFAULT_COMPRESSION_MODE default compression mode}.
*
* <p>
* This is a convenience constructor, equivalent to:
* <blockquote>
* <code>LZMACompressor(data, DEFAULT_COMPRESSION_MODE)</code>
* </blockquote>
*/
public LZMAByteArrayCompressor(byte[] data) {
this(data, DEFAULT_COMPRESSION_MODE);
}
/**
* Primary constructor.
*
* @param data uncompressed data
* @param mode compression mode
* @throws IllegalArgumentException if {@code mode} is null
*/
public LZMAByteArrayCompressor(byte[] data, CompressionMode mode) {
this.output = new ByteArrayOutputStream();
try {
init(new ByteArrayInputStream(data), this.output, data.length, mode);
} catch (IOException e) {
throw new RuntimeException("impossible exception");
}
}
/**
* Get the compressed data.
*/
public byte[] getCompressedData() {
return this.output.toByteArray();
}
}