InflaterOutputStream (Java SE 26 & JDK 26)
Description: declaration: module: java.base, package: java.util.zip, class: InflaterOutputStream
Keywords: java.util.zip.InflaterOutputStream class

# Class InflaterOutputStream

java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
java.util.zip.InflaterOutputStream

All Implemented Interfaces:
  `Closeable, Flushable, AutoCloseable`

public class InflaterOutputStream extends FilterOutputStream
Implements an output stream filter for uncompressing data stored in the "deflate" compression format.

## Decompressor Usage

An `InflaterOutputStream` created without specifying a decompressor will create a decompressor at construction time, and close the decompressor when the output stream is closed.

If a decompressor is specified when creating a `InflaterOutputStream`, it is the responsibility of the caller to close the decompressor after closing the output stream.

API Note:
  The `close()` method should be called to release resources used by this stream, either directly, or with the `try`-with-resources statement.
Since:
  1.6
See Also:
  - `InflaterInputStream`
  - `DeflaterInputStream`
  - `DeflaterOutputStream`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final byte[]`
  `buf`
  Output buffer for writing uncompressed data.
  `protected final Inflater`
  `inf`
  Decompressor for this stream.

  ### Fields declared in class FilterOutputStream

  `out`
  Modifier and Type
  Field
  Description
  `protected OutputStream`
  `out`
  The underlying output stream to be filtered.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `InflaterOutputStream(OutputStream out)`
  Creates a new output stream and decompressor with a default buffer size.
  `InflaterOutputStream(OutputStream out, Inflater infl)`
  Creates a new output stream with the specified decompressor and a default buffer size.
  `InflaterOutputStream(OutputStream out, Inflater infl, int bufLen)`
  Creates a new output stream with the specified decompressor and buffer size.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  Writes any remaining uncompressed data to the output stream and closes the underlying output stream.
  `void`
  `finish()`
  Finishes writing uncompressed data to the output stream without closing the underlying stream.
  `void`
  `flush()`
  Flushes this output stream, forcing any pending buffered output bytes to be written.
  `void`
  `write(byte[] b, int off, int len)`
  Writes an array of bytes to the uncompressed output stream.
  `void`
  `write(int b)`
  Writes a byte to the uncompressed output stream.

  ### Methods declared in class FilterOutputStream

  `write`
  Modifier and Type
  Method
  Description
  `void`
  `write(byte[] b)`
  Writes `b.length` bytes to this output stream.

  ### Methods declared in class OutputStream

  `nullOutputStream`
  Modifier and Type
  Method
  Description
  `static OutputStream`
  `nullOutputStream()`
  Returns a new `OutputStream` which discards all bytes.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Field Details

  - ### inf

    protected final Inflater inf
    Decompressor for this stream.

  - ### buf

    protected final byte[] buf
    Output buffer for writing uncompressed data.

- ## Constructor Details

  - ### InflaterOutputStream

    public InflaterOutputStream(OutputStream out)
    Creates a new output stream and decompressor with a default buffer size.

    The decompressor will be closed when this output stream is closed.

    Parameters:
      `out` - output stream to write the uncompressed data to
    Throws:
      `NullPointerException` - if `out` is null

  - ### InflaterOutputStream

    public InflaterOutputStream(OutputStream out, Inflater infl)
    Creates a new output stream with the specified decompressor and a default buffer size.

    Closing this output stream will not close the given decompressor.

    Parameters:
      `out` - output stream to write the uncompressed data to
      `infl` - decompressor ("inflater") for this stream
    Throws:
      `NullPointerException` - if `out` or `infl` is null

  - ### InflaterOutputStream

    public InflaterOutputStream(OutputStream out, Inflater infl, int bufLen)
    Creates a new output stream with the specified decompressor and buffer size.

    Closing this output stream will not close the given decompressor.

    Parameters:
      `out` - output stream to write the uncompressed data to
      `infl` - decompressor ("inflater") for this stream
      `bufLen` - decompression buffer size
    Throws:
      `IllegalArgumentException` - if `bufLen <= 0`
      `NullPointerException` - if `out` or `infl` is null

- ## Method Details

  - ### close

    public void close() throws IOException
    Writes any remaining uncompressed data to the output stream and closes the underlying output stream.
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Overrides:
      `close` in class `FilterOutputStream`
    Throws:
      `IOException` - if an I/O error occurs
    See Also:
      - `FilterOutputStream.flush()`
      - `FilterOutputStream.out`

  - ### flush

    public void flush() throws IOException
    Flushes this output stream, forcing any pending buffered output bytes to be written.
    Specified by:
      `flush` in interface `Flushable`
    Overrides:
      `flush` in class `FilterOutputStream`
    Throws:
      `IOException` - if an I/O error occurs or this stream is already closed
    See Also:
      - `FilterOutputStream.out`

  - ### finish

    public void finish() throws IOException
    Finishes writing uncompressed data to the output stream without closing the underlying stream. Use this method when applying multiple filters in succession to the same output stream.
    Throws:
      `IOException` - if an I/O error occurs or this stream is already closed

  - ### write

    public void write(int b) throws IOException
    Writes a byte to the uncompressed output stream.
    Overrides:
      `write` in class `FilterOutputStream`
    Parameters:
      `b` - a single byte of compressed data to decompress and write to the output stream
    Throws:
      `IOException` - if an I/O error occurs or this stream is already closed
      `ZipException` - if a compression (ZIP) format error occurs

  - ### write

    public void write(byte[] b, int off, int len) throws IOException
    Writes an array of bytes to the uncompressed output stream.
    Overrides:
      `write` in class `FilterOutputStream`
    Parameters:
      `b` - buffer containing compressed data to decompress and write to the output stream
      `off` - starting offset of the compressed data within `b`
      `len` - number of bytes to decompress from `b`
    Throws:
      `IndexOutOfBoundsException` - if `off < 0`, or if `len < 0`, or if `len > b.length - off`
      `IOException` - if an I/O error occurs or this stream is already closed
      `NullPointerException` - if `b` is null
      `ZipException` - if a compression (ZIP) format error occurs
    See Also:
      - `FilterOutputStream.write(int)`