Module java.base
Package java.util.zip

Class 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.
    • 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.
    • 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.
      • 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