GzipCompressorInputStream
Date: 2017-02-08

org.apache.commons.compress.compressors.gzip

## Class GzipCompressorInputStream

- java.lang.Object
- - java.io.InputStream
  - - org.apache.commons.compress.compressors.CompressorInputStream
    - - org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

      public class GzipCompressorInputStream
      extends CompressorInputStream

  Input stream that decompresses .gz files. This supports decompressing concatenated .gz files which is important when decompressing standalone .gz files.

  `GZIPInputStream` doesn't decompress concatenated .gz files: it stops after the first member and silently ignores the rest. It doesn't leave the read position to point to the beginning of the next member, which makes it difficult workaround the lack of concatenation support.

  Instead of using `GZIPInputStream`, this class has its own .gz container format decoder. The actual decompression is done with `Inflater`.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `GzipCompressorInputStream(java.io.InputStream inputStream)` Constructs a new input stream that decompresses gzip-compressed data from the specified input stream.
    `GzipCompressorInputStream(java.io.InputStream inputStream, boolean decompressConcatenated)` Constructs a new input stream that decompresses gzip-compressed data from the specified input stream.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` Closes the input stream (unless it is System.in).
    `GzipParameters` | `getMetaData()` Provides the stream's meta data - may change with each stream when decompressing concatenated streams.
    `static boolean` | `matches(byte[] signature, int length)` Checks if the signature matches what is expected for a .gz file.
    `int` | `read()`
    `int` | `read(byte[] b, int off, int len)`

    - ### Methods inherited from class org.apache.commons.compress.compressors.CompressorInputStream

      `count, count, getBytesRead, getCount, pushedBackBytes`

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

      `available, mark, markSupported, read, reset, skip`

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

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

- - ### Constructor Detail

    - #### GzipCompressorInputStream

          public GzipCompressorInputStream(java.io.InputStream inputStream)
                                    throws java.io.IOException

      Constructs a new input stream that decompresses gzip-compressed data from the specified input stream.

      This is equivalent to `GzipCompressorInputStream(inputStream, false)` and thus will not decompress concatenated .gz files.

      Parameters:
        `inputStream` - the InputStream from which this object should be created of
      Throws:
        `java.io.IOException` - if the stream could not be created

    - #### GzipCompressorInputStream

          public GzipCompressorInputStream(java.io.InputStream inputStream,
                                   boolean decompressConcatenated)
                                    throws java.io.IOException

      Constructs a new input stream that decompresses gzip-compressed data from the specified input stream.

      If `decompressConcatenated` is `false`: This decompressor might read more input than it will actually use. If `inputStream` supports `mark` and `reset`, then the input position will be adjusted so that it is right after the last byte of the compressed stream. If `mark` isn't supported, the input position will be undefined.

      Parameters:
        `inputStream` - the InputStream from which this object should be created of
        `decompressConcatenated` - if true, decompress until the end of the input; if false, stop after the first .gz member
      Throws:
        `java.io.IOException` - if the stream could not be created

  - ### Method Detail

    - #### getMetaData

          public GzipParameters getMetaData()

      Provides the stream's meta data - may change with each stream when decompressing concatenated streams.
      Returns:
        the stream's meta data
      Since:
        1.8

    - #### read

          public int read()
                   throws java.io.IOException

      Specified by:
        `read` in class `java.io.InputStream`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(byte[] b,
                 int off,
                 int len)
                   throws java.io.IOException

      Overrides:
        `read` in class `java.io.InputStream`
      Throws:
        `java.io.IOException`
      Since:
        1.1

    - #### matches

          public static boolean matches(byte[] signature,
                        int length)

      Checks if the signature matches what is expected for a .gz file.
      Parameters:
        `signature` - the bytes to check
        `length` - the number of bytes to check
      Returns:
        true if this is a .gz stream, false otherwise
      Since:
        1.1

    - #### close

          public void close()
                     throws java.io.IOException

      Closes the input stream (unless it is System.in).
      Specified by:
        `close` in interface `java.io.Closeable`
      Specified by:
        `close` in interface `java.lang.AutoCloseable`
      Overrides:
        `close` in class `java.io.InputStream`
      Throws:
        `java.io.IOException`
      Since:
        1.2