Module java.base
Package java.util.zip

## Class DeflaterInputStream

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

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

      public class DeflaterInputStream
      extends FilterInputStream

  Implements an input stream filter for compressing data in the "deflate" compression format.
  Since:
    1.6
  See Also:
    `DeflaterOutputStream`, `InflaterOutputStream`, `InflaterInputStream`

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected byte[]` | `buf` | Input buffer for reading compressed data.
    `protected Deflater` | `def` | Compressor for this stream.

    - ### Fields inherited from class java.io.FilterInputStream

      `in`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DeflaterInputStream​(InputStream in)` | Creates a new input stream with a default compressor and buffer size.
    `DeflaterInputStream​(InputStream in, Deflater defl)` | Creates a new input stream with the specified compressor and a default buffer size.
    `DeflaterInputStream​(InputStream in, Deflater defl, int bufLen)` | Creates a new input stream with the specified compressor 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 its underlying input stream, discarding any pending uncompressed data.
    `void` | `mark​(int limit)` | This operation is not supported.
    `boolean` | `markSupported​()` | Always returns `false` because this input stream does not support the `mark()` and `reset()` methods.
    `int` | `read​()` | Reads a single byte of compressed data from the input stream.
    `int` | `read​(byte[] b, int off, int len)` | Reads compressed data into a byte array.
    `void` | `reset​()` | This operation is not supported.
    `long` | `skip​(long n)` | Skips over and discards data from the input stream.

    - ### Methods inherited from class java.io.FilterInputStream

      `read`

    - ### Methods inherited from class java.io.InputStream

      `readAllBytes, readNBytes, transferTo`

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

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

- - ### Field Detail

    - #### def

          protected final Deflater def

      Compressor for this stream.

    - #### buf

          protected final byte[] buf

      Input buffer for reading compressed data.

  - ### Constructor Detail

    - #### DeflaterInputStream

          public DeflaterInputStream​(InputStream in)

      Creates a new input stream with a default compressor and buffer size.
      Parameters:
        `in` - input stream to read the uncompressed data to
      Throws:
        `NullPointerException` - if `in` is null

    - #### DeflaterInputStream

          public DeflaterInputStream​(InputStream in,
                                     Deflater defl)

      Creates a new input stream with the specified compressor and a default buffer size.
      Parameters:
        `in` - input stream to read the uncompressed data to
        `defl` - compressor ("deflater") for this stream
      Throws:
        `NullPointerException` - if `in` or `defl` is null

    - #### DeflaterInputStream

          public DeflaterInputStream​(InputStream in,
                                     Deflater defl,
                                     int bufLen)

      Creates a new input stream with the specified compressor and buffer size.
      Parameters:
        `in` - input stream to read the uncompressed data to
        `defl` - compressor ("deflater") for this stream
        `bufLen` - compression buffer size
      Throws:
        `IllegalArgumentException` - if `bufLen <= 0`
        `NullPointerException` - if `in` or `defl` is null

  - ### Method Detail

    - #### close

          public void close​()
                     throws IOException

      Closes this input stream and its underlying input stream, discarding any pending uncompressed data.
      Specified by:
        `close` in interface `AutoCloseable`
      Specified by:
        `close` in interface `Closeable`
      Overrides:
        `close` in class `FilterInputStream`
      Throws:
        `IOException` - if an I/O error occurs
      See Also:
        `FilterInputStream.in`

    - #### read

          public int read​()
                   throws IOException

      Reads a single byte of compressed data from the input stream. This method will block until some input can be read and compressed.
      Overrides:
        `read` in class `FilterInputStream`
      Returns:
        a single byte of compressed data, or -1 if the end of the uncompressed input stream is reached
      Throws:
        `IOException` - if an I/O error occurs or if this stream is already closed
      See Also:
        `FilterInputStream.in`

    - #### read

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

      Reads compressed data into a byte array. This method will block until some input can be read and compressed.
      Overrides:
        `read` in class `FilterInputStream`
      Parameters:
        `b` - buffer into which the data is read
        `off` - starting offset of the data within `b`
        `len` - maximum number of compressed bytes to read into `b`
      Returns:
        the actual number of bytes read, or -1 if the end of the uncompressed input stream is reached
      Throws:
        `IndexOutOfBoundsException` - if `len > b.length - off`
        `IOException` - if an I/O error occurs or if this input stream is already closed
      See Also:
        `FilterInputStream.in`

    - #### skip

          public long skip​(long n)
                    throws IOException

      Skips over and discards data from the input stream. This method may block until the specified number of bytes are read and skipped. Note: While `n` is given as a `long`, the maximum number of bytes which can be skipped is `Integer.MAX_VALUE`.
      Overrides:
        `skip` in class `FilterInputStream`
      Parameters:
        `n` - number of bytes to be skipped
      Returns:
        the actual number of bytes skipped
      Throws:
        `IOException` - if an I/O error occurs or if this stream is already closed

    - #### 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:
        zero after the end of the underlying input stream has been reached, otherwise always returns 1
      Throws:
        `IOException` - if an I/O error occurs or if this stream is already closed

    - #### markSupported

          public boolean markSupported​()

      Always returns `false` because this input stream does not support the `mark()` and `reset()` methods.
      Overrides:
        `markSupported` in class `FilterInputStream`
      Returns:
        false, always
      See Also:
        `FilterInputStream.in`, `InputStream.mark(int)`, `InputStream.reset()`

    - #### mark

          public void mark​(int limit)

      This operation is not supported.
      Overrides:
        `mark` in class `FilterInputStream`
      Parameters:
        `limit` - maximum bytes that can be read before invalidating the position marker
      See Also:
        `FilterInputStream.in`, `FilterInputStream.reset()`

    - #### reset

          public void reset​()
                     throws IOException

      This operation is not supported.
      Overrides:
        `reset` in class `FilterInputStream`
      Throws:
        `IOException` - always thrown
      See Also:
        `FilterInputStream.in`, `FilterInputStream.mark(int)`