Module java.base
Package java.util.zip

Class 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 Details

    • def

      protected final Deflater def
      Compressor for this stream.
    • buf

      protected final byte[] buf
      Input buffer for reading compressed data.
  • Constructor Details

    • 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 Details

    • 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
      See Also:
      InputStream.skipNBytes(long)
    • 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)