InflaterInputStream (Java SE 11 & JDK 11 )
Keywords: java.util.zip.InflaterInputStream class

Module java.base
Package java.util.zip

## Class InflaterInputStream

- java.lang.Object
- - java.io.InputStream
  - - java.io.FilterInputStream
    - - java.util.zip.InflaterInputStream

- All Implemented Interfaces:
    `Closeable`, `AutoCloseable`
  Direct Known Subclasses:
    `GZIPInputStream`, `ZipInputStream`

      public class InflaterInputStream
      extends FilterInputStream

  This class implements a stream filter for uncompressing data in the "deflate" compression format. It is also used as the basis for other decompression filters, such as GZIPInputStream.
  Since:
    1.1
  See Also:
    `Inflater`

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected byte[]` | `buf` | Input buffer for decompression.
    `protected Inflater` | `inf` | Decompressor for this stream.
    `protected int` | `len` | Length of input buffer.

    - ### Fields declared in class java.io.FilterInputStream

      `in`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `InflaterInputStream​(InputStream in)` | Creates a new input stream with a default decompressor and buffer size.
    `InflaterInputStream​(InputStream in, Inflater inf)` | Creates a new input stream with the specified decompressor and a default buffer size.
    `InflaterInputStream​(InputStream in, Inflater inf, int size)` | Creates a new input stream with the specified decompressor and buffer size.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `int` | `available()` | Returns 0 after EOF has been reached, otherwise always return 1.
    `void` | `close()` | Closes this input stream and releases any system resources associated with the stream.
    `protected void` | `fill()` | Fills input buffer with more data to decompress.
    `void` | `mark​(int readlimit)` | Marks the current position in this input stream.
    `boolean` | `markSupported()` | Tests if this input stream supports the `mark` and `reset` methods.
    `int` | `read()` | Reads a byte of uncompressed data.
    `int` | `read​(byte[] b, int off, int len)` | Reads uncompressed data into an array of bytes.
    `void` | `reset()` | Repositions this stream to the position at the time the `mark` method was last called on this input stream.
    `long` | `skip​(long n)` | Skips specified number of bytes of uncompressed data.

    - ### Methods declared in class java.io.FilterInputStream

      `read`

    - ### Methods declared in class java.io.InputStream

      `nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo`

    - ### Methods declared in class java.lang.Object

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

- - ### Field Detail

    - #### inf

          protected Inflater inf

      Decompressor for this stream.

    - #### buf

          protected byte[] buf

      Input buffer for decompression.

    - #### len

          protected int len

      Length of input buffer.

  - ### Constructor Detail

    - #### InflaterInputStream

          public InflaterInputStream​(InputStream in,
                                     Inflater inf,
                                     int size)

      Creates a new input stream with the specified decompressor and buffer size.
      Parameters:
        `in` - the input stream
        `inf` - the decompressor ("inflater")
        `size` - the input buffer size
      Throws:
        `IllegalArgumentException` - if `size <= 0`

    - #### InflaterInputStream

          public InflaterInputStream​(InputStream in,
                                     Inflater inf)

      Creates a new input stream with the specified decompressor and a default buffer size.
      Parameters:
        `in` - the input stream
        `inf` - the decompressor ("inflater")

    - #### InflaterInputStream

          public InflaterInputStream​(InputStream in)

      Creates a new input stream with a default decompressor and buffer size.
      Parameters:
        `in` - the input stream

  - ### Method Detail

    - #### read

          public int read()
                   throws IOException

      Reads a byte of uncompressed data. This method will block until enough input is available for decompression.
      Overrides:
        `read` in class `FilterInputStream`
      Returns:
        the byte read, or -1 if end of compressed input is reached
      Throws:
        `IOException` - if an I/O error has occurred
      See Also:
        `FilterInputStream.in`

    - #### read

          public int read​(byte[] b,
                          int off,
                          int len)
                   throws IOException

      Reads uncompressed data into an array of bytes. If `len` is not zero, the method will block until some input can be decompressed; otherwise, no bytes are read and `0` is returned.
      Overrides:
        `read` in class `FilterInputStream`
      Parameters:
        `b` - the buffer into which the data is read
        `off` - the start offset in the destination array `b`
        `len` - the maximum number of bytes read
      Returns:
        the actual number of bytes read, or -1 if the end of the compressed input is reached or a preset dictionary is needed
      Throws:
        `NullPointerException` - If `b` is `null`.
        `IndexOutOfBoundsException` - If `off` is negative, `len` is negative, or `len` is greater than `b.length - off`
        `ZipException` - if a ZIP format error has occurred
        `IOException` - if an I/O error has occurred
      See Also:
        `FilterInputStream.in`

    - #### available

          public int available()
                        throws IOException

      Returns 0 after EOF has been reached, otherwise always return 1.

      Programs should not count on this method to return the actual number of bytes that could be read without blocking.

      Overrides:
        `available` in class `FilterInputStream`
      Returns:
        1 before EOF and 0 after EOF.
      Throws:
        `IOException` - if an I/O error occurs.

    - #### skip

          public long skip​(long n)
                    throws IOException

      Skips specified number of bytes of uncompressed data.
      Overrides:
        `skip` in class `FilterInputStream`
      Parameters:
        `n` - the number of bytes to skip
      Returns:
        the actual number of bytes skipped.
      Throws:
        `IOException` - if an I/O error has occurred
        `IllegalArgumentException` - if `n < 0`

    - #### close

          public void close()
                     throws IOException

      Closes this input stream and releases any system resources associated with the stream.
      Specified by:
        `close` in interface `AutoCloseable`
      Specified by:
        `close` in interface `Closeable`
      Overrides:
        `close` in class `FilterInputStream`
      Throws:
        `IOException` - if an I/O error has occurred
      See Also:
        `FilterInputStream.in`

    - #### fill

          protected void fill()
                       throws IOException

      Fills input buffer with more data to decompress.
      Throws:
        `IOException` - if an I/O error has occurred

    - #### markSupported

          public boolean markSupported()

      Tests if this input stream supports the `mark` and `reset` methods. The `markSupported` method of `InflaterInputStream` returns `false`.
      Overrides:
        `markSupported` in class `FilterInputStream`
      Returns:
        a `boolean` indicating if this stream type supports the `mark` and `reset` methods.
      See Also:
        `InputStream.mark(int)`, `InputStream.reset()`

    - #### mark

          public void mark​(int readlimit)

      Marks the current position in this input stream.

      The `mark` method of `InflaterInputStream` does nothing.

      Overrides:
        `mark` in class `FilterInputStream`
      Parameters:
        `readlimit` - the maximum limit of bytes that can be read before the mark position becomes invalid.
      See Also:
        `InputStream.reset()`

    - #### reset

          public void reset()
                     throws IOException

      Repositions this stream to the position at the time the `mark` method was last called on this input stream.

      The method `reset` for class `InflaterInputStream` does nothing except throw an `IOException`.

      Overrides:
        `reset` in class `FilterInputStream`
      Throws:
        `IOException` - if this method is invoked.
      See Also:
        `InputStream.mark(int)`, `IOException`