Class InflaterInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
sk.iway.iwcm.system.zip.InflaterInputStream
All Implemented Interfaces:
Closeable, AutoCloseable
Direct Known Subclasses:
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.
See Also:
  • Field Details

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

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

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

      public int read(byte[] b, int off, int len) throws IOException
      Reads uncompressed data into an array of bytes. This method will block until some input can be decompressed.
      Overrides:
      read in class FilterInputStream
      Parameters:
      b - the buffer into which the data is read
      off - the start offset of the data
      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:
      ZipException - if a ZIP format error has occurred
      IOException - if an I/O error has occurred
    • available

      public int available() throws IOException
      Returns 0 after EOF has 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 the input 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
    • fill

      protected void fill() throws IOException
      Fills input buffer with more data to decompress.
      Throws:
      IOException - if an I/O error has occurred