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,InputStreamStatistics
public class GzipCompressorInputStream extends CompressorInputStream implements InputStreamStatistics
Input stream that decompresses GZIP (.gz) files.This supports decompressing concatenated GZIP files which is important when decompressing standalone GZIP files.
Instead of using
java.util.zip.GZIPInputStream, this class has its own GZIP member decoder. Internally, decompression is done usingInflater.If you use the constructor
GzipCompressorInputStream(in),Builder.setDecompressConcatenated(false), orGzipCompressorInputStream(in, false), thenread()will return -1 as soon as the first encoded GZIP member has been completely read. In this case, if the underlying input stream supportsmark()andreset(), 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
Builder.setDecompressConcatenated(true)orGzipCompressorInputStream(in, true)thenread()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 anIOExceptionis 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.To build an instance, use
GzipCompressorInputStream.Builder.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classGzipCompressorInputStream.BuilderBuilds a newGzipCompressorInputStream.
-
Constructor Summary
Constructors Constructor 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)Deprecated.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static GzipCompressorInputStream.Builderbuilder()Constructs a new builder ofGzipCompressorInputStream.voidclose()Closes the input stream (unless it is System.in).longgetCompressedCount()Gets the amount of raw or compressed bytes read by the stream.GzipParametersgetMetaData()Provides the stream's meta data - may change with each stream when decompressing concatenated streams.static booleanmatches(byte[] signature, int length)Checks if the signature matches what is expected for a .gz file.intread()intread(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, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, transferTo
-
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 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
@Deprecated public GzipCompressorInputStream(java.io.InputStream inputStream, boolean decompressConcatenated) throws java.io.IOException
Deprecated.Constructs a new input stream that decompresses gzip-compressed data from the specified input stream.If
decompressConcatenatedisfalse: This decompressor might read more input than it will actually use. IfinputStreamsupportsmarkandreset, then the input position will be adjusted so that it is right after the last byte of the compressed stream. Ifmarkisn'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:
java.io.IOException- if the stream could not be created
-
-
Method Detail
-
builder
public static GzipCompressorInputStream.Builder builder()
Constructs a new builder ofGzipCompressorInputStream.- Returns:
- a new builder of
GzipCompressorInputStream. - Since:
- 1.28.0
-
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 checklength- 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:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.InputStream- Throws:
java.io.IOException- Since:
- 1.2
-
getCompressedCount
public long getCompressedCount()
Gets the amount of raw or compressed bytes read by the stream..- Specified by:
getCompressedCountin interfaceInputStreamStatistics- Returns:
- the amount of raw or compressed bytes read by the stream.
- Since:
- 1.17
-
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:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException
- Overrides:
readin classjava.io.InputStream- Throws:
java.io.IOException- Since:
- 1.1
-
-