Package org.apache.commons.compress.compressors.xz

# Class XZCompressorOutputStream

java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
org.apache.commons.compress.CompressFilterOutputStream<org.tukaani.xz.XZOutputStream>
org.apache.commons.compress.compressors.CompressorOutputStream<org.tukaani.xz.XZOutputStream>
org.apache.commons.compress.compressors.xz.XZCompressorOutputStream

All Implemented Interfaces:
  `Closeable`, `Flushable`, `AutoCloseable`

public class XZCompressorOutputStream extends CompressorOutputStream<org.tukaani.xz.XZOutputStream>
Compresses an output stream using the XZ and LZMA2 compression options.

For example:

     XZCompressorOutputStream s = XZCompressorOutputStream.builder()
       .setPath(path)
       .setLzma2Options(new LZMA2Options(...))
       .get();

## Calling flush

Calling `FilterOutputStream.flush()` flushes the encoder and calls `outputStream.flush()`. All buffered pending data will then be decompressible from the output stream. Calling this function very often may increase the compressed file size a lot.

Since:
  1.4

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `XZCompressorOutputStream.Builder`
  Builds a new `XZCompressorOutputStream`.

- ## Field Summary

  ### Fields inherited from class java.io.FilterOutputStream

  `out`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `XZCompressorOutputStream(OutputStream outputStream)`
  Creates a new XZ compressor using the default LZMA2 options.
  `XZCompressorOutputStream(OutputStream outputStream, int preset)`
  Deprecated.
  Use `builder()`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static XZCompressorOutputStream.Builder`
  `builder()`
  Constructs a new builder of `XZCompressorOutputStream`.
  `void`
  `finish()`
  Finishes compression without closing the underlying stream.
  `void`
  `write(byte[] buf, int off, int len)`

  ### Methods inherited from class org.apache.commons.compress.CompressFilterOutputStream

  `checkOpen, close, isClosed, isFinished, out, write, write, writeUsAscii, writeUsAsciiRaw, writeUtf8`

  ### Methods inherited from class java.io.FilterOutputStream

  `flush, write, write`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### XZCompressorOutputStream

    public XZCompressorOutputStream(OutputStream outputStream) throws IOException
    Creates a new XZ compressor using the default LZMA2 options. This is equivalent to `XZCompressorOutputStream(outputStream, 6)`.
    Parameters:
      `outputStream` - the stream to wrap
    Throws:
      `IOException` - on error

  - ### XZCompressorOutputStream

    @Deprecated public XZCompressorOutputStream(OutputStream outputStream, int preset) throws IOException
    Deprecated.
    Use `builder()`.
    Creates a new XZ compressor using the specified LZMA2 preset level.

    The presets 0-3 are fast presets with medium compression. The presets 4-6 are fairly slow presets with high compression. The default preset is 6.

    The presets 7-9 are like the preset 6 but use bigger dictionaries and have higher compressor and decompressor memory requirements. Unless the uncompressed size of the file exceeds 8 MiB, 16 MiB, or 32 MiB, it is waste of memory to use the presets 7, 8, or 9, respectively.

    Parameters:
      `outputStream` - the stream to wrap
      `preset` - the preset
    Throws:
      `IOException` - on error

- ## Method Details

  - ### builder

    public static XZCompressorOutputStream.Builder builder()
    Constructs a new builder of `XZCompressorOutputStream`.
    Returns:
      a new builder of `XZCompressorOutputStream`.
    Since:
      1.28.0

  - ### finish

    public void finish() throws IOException
    Finishes compression without closing the underlying stream. No more data can be written to this stream after finishing.
    Overrides:
      `finish` in class `CompressFilterOutputStream<org.tukaani.xz.XZOutputStream>`
    Throws:
      `IOException` - on error

  - ### write

    public void write(byte[] buf, int off, int len) throws IOException
    Overrides:
      `write` in class `FilterOutputStream`
    Throws:
      `IOException`