Class GzipCompressorInputStream
- All Implemented Interfaces:
Closeable
,AutoCloseable
,InputStreamStatistics
This supports decompressing concatenated .gz files which is important when decompressing standalone .gz files.
Instead of using java.util.zip.GZIPInputStream
, this class has its own GZIP member decoder.
The actual decompression is done with Inflater
.
If you use the constructor GzipCompressorInputStream(in)
or GzipCompressorInputStream(in, false)
,
then read()
will return -1 as soon as the first encoded GZIP member has been completely read. In this case,
if the underlying input stream supports mark()
and reset()
,
then it will be left positioned just after the end of the encoded GZIP member; otherwise, some indeterminate number
of extra bytes following the encoded GZIP member will have been consumed and discarded.
If you use the constructor GzipCompressorInputStream(in, true)
then read()
will return -1 only after
the entire input stream has been exhausted; any bytes that follow an encoded GZIP member must constitute a new encoded
GZIP member, otherwise an IOException
is thrown. The data read from a stream constructed this way will consist
of the concatenated data of all of the encoded GZIP members in order.
- See Also:
-
- "https://tools.ietf.org/html/rfc1952"
-
Constructor Summary
ConstructorDescriptionGzipCompressorInputStream
(InputStream inputStream) Constructs a new input stream that decompresses gzip-compressed data from the specified input stream.GzipCompressorInputStream
(InputStream inputStream, boolean decompressConcatenated) Constructs a new input stream that decompresses gzip-compressed data from the specified input stream. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Closes the input stream (unless it is System.in).long
Gets the amount of raw or compressed bytes read by the stream.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, getUncompressedCount, 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
Methods inherited from interface org.apache.commons.compress.utils.InputStreamStatistics
getUncompressedCount
-
Constructor Details
-
GzipCompressorInputStream
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:
IOException
- if the stream could not be created
-
GzipCompressorInputStream
public GzipCompressorInputStream(InputStream inputStream, boolean decompressConcatenated) throws IOException Constructs a new input stream that decompresses gzip-compressed data from the specified input stream.If
decompressConcatenated
isfalse
: This decompressor might read more input than it will actually use. IfinputStream
supportsmark
andreset
, then the input position will be adjusted so that it is right after the last byte of the compressed stream. Ifmark
isn't supported, the input position will be undefined.- Parameters:
inputStream
- the InputStream from which this object should be created ofdecompressConcatenated
- if true, decompress until the end of the input; if false, stop after the first .gz member- Throws:
IOException
- if the stream could not be created
-
-
Method Details
-
matches
Checks if the signature matches what is expected for a .gz file.- Parameters:
signature
- the bytes to checklength
- the number of bytes to check- Returns:
- true if this is a .gz stream, false otherwise
- Since:
- 1.1
-
close
Closes the input stream (unless it is System.in).- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classInputStream
- Throws:
IOException
- Since:
- 1.2
-
getCompressedCount
Description copied from interface:InputStreamStatistics
Gets the amount of raw or compressed bytes read by the stream.- Specified by:
getCompressedCount
in interfaceInputStreamStatistics
- Returns:
- the amount of raw or compressed bytes read by the stream.
- Since:
- 1.17
-
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
- Specified by:
read
in classInputStream
- Throws:
IOException
-
read
- Overrides:
read
in classInputStream
- Throws:
IOException
- Since:
- 1.1
-