Class GZIPInputStream
- All Implemented Interfaces:
Closeable, AutoCloseable
public class GZIPInputStream extends InflaterInputStream
GZIP file format
The GZIP file format is specified by RFC 1952. The format, as specified in section 2.2 of the RFC, consists of a series of "members" that appear one after another in the stream with no additional information before, between, or after them. Each member consists of a header, followed by data that is compressed using thedeflate algorithm, and then a trailer. This class is capable of reading a stream consisting of a series of members.
Reading from the stream may read and buffer bytes from the underlying stream. This includes bytes that follow a member's trailer. Whether or not any additional bytes have been read past a member's trailer, the read methods on this class yield decompressed data from at most one member; data from multiple members is not combined in a single read operation.
Thread safety
GZIPInputStream is not safe for use by multiple concurrent threads. Any multithreaded concurrent use must be guarded by appropriate synchronization.- API Note:
- The
close()method should be called to release resources used by this stream, either directly, or with thetry-with-resources statement. - Implementation Note:
- After reading a member trailer, the read method calls
InputStream.available()on the underlying stream to determine whether additional bytes are available that may represent a subsequent member. If thejdk.util.gzip.tryReadAheadAfterTrailersystem property is set totrue, then the call toInputStream.available()is skipped and the implementation instead attempts to read a subsequent member in the stream.GZIPInputStreamdepends on the return value ofInputStream.available()to reliably process a stream with a series of members. Consequently, it may be necessary to set this property in environments that process streams with a series of members. By default, thejdk.util.gzip.tryReadAheadAfterTrailersystem property is not set, andInputStream.available()gets called. - Since:
- 1.1
- External Specifications
- See Also:
Field Summary
| Modifier and Type | Field | Description |
|---|---|---|
protected CRC32 |
crc |
CRC-32 for decompressed data. |
protected boolean |
eos |
Indicates end of input stream. |
static final int |
GZIP_MAGIC |
GZIP header magic number. |
Fields declared in class InflaterInputStream
buf, inf, len | Modifier and Type | Field | Description |
|---|---|---|
protected byte[] |
buf |
Input buffer for decompression. |
protected Inflater |
inf |
Decompressor for this stream. |
protected int |
len |
The total number of bytes read into the input buffer. |
Fields declared in class FilterInputStream
in | Modifier and Type | Field | Description |
|---|---|---|
protected InputStream |
in |
The input stream to be filtered. |
Constructor Summary
| Constructor | Description |
|---|---|
GZIPInputStream |
Creates a new input stream with a default buffer size. |
GZIPInputStream |
Creates a new input stream with the specified buffer size. |
Method Summary
Methods declared in class InflaterInputStream
available, fill, mark, markSupported, read, reset, skip | Modifier and Type | Method | Description |
|---|---|---|
int |
available() |
Returns 0 after EOF has been reached, otherwise always return 1. |
protected void |
fill() |
Fills input buffer with more data to decompress. |
void |
mark |
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. |
void |
reset() |
Repositions this stream to the position at the time the mark method was last called on this input stream. |
long |
skip |
Skips specified number of bytes of uncompressed data. |
Methods declared in class FilterInputStream
read | Modifier and Type | Method | Description |
|---|---|---|
int |
read |
Reads up to b.length bytes of data from this input stream into an array of bytes. |
Methods declared in class InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo | Modifier and Type | Method | Description |
|---|---|---|
static InputStream |
nullInputStream() |
Returns a new InputStream that reads no bytes. |
byte[] |
readAllBytes() |
Reads all remaining bytes from the input stream. |
int |
readNBytes |
Reads the requested number of bytes from the input stream into the given byte array. |
byte[] |
readNBytes |
Reads up to a specified number of bytes from the input stream. |
void |
skipNBytes |
Skips over and discards exactly n bytes of data from this input stream. |
long |
transferTo |
Reads all bytes from this input stream and writes the bytes to the given output stream in the order that they are read. |
Methods declared in class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Modifier and Type | Method | Description |
|---|---|---|
protected Object |
clone() |
Creates and returns a copy of this object. |
boolean |
equals |
Indicates whether some other object is "equal to" this one. |
protected void |
finalize() |
Deprecated, for removal: This API element is subject to removal in a future version. Finalization is deprecated and subject to removal in a future release. |
final Class |
getClass() |
Returns the runtime class of this Object. |
int |
hashCode() |
Returns a hash code value for this object. |
final void |
notify() |
Wakes up a single thread that is waiting on this object's monitor. |
final void |
notifyAll() |
Wakes up all threads that are waiting on this object's monitor. |
String |
toString() |
Returns a string representation of the object. |
final void |
wait() |
Causes the current thread to wait until it is awakened, typically by being notified or interrupted. |
final void |
wait |
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed. |
final void |
wait |
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed. |
Field Details
GZIP_MAGIC
public static final int GZIP_MAGIC
- See Also:
crc
protected CRC32 crc
eos
protected boolean eos
Constructor Details
GZIPInputStream
public GZIPInputStream(InputStream in, int size) throws IOException
- Parameters:
-
in- the input stream -
size- the input buffer size - Throws:
-
ZipException- if a GZIP format error has occurred or the compression method used is unsupported -
NullPointerException- ifinis null -
IOException- if an I/O error occurs when reading the member header from the underlying stream -
IllegalArgumentException- ifsize <= 0
GZIPInputStream
public GZIPInputStream(InputStream in) throws IOException
- Parameters:
-
in- the input stream - Throws:
-
ZipException- if a GZIP format error has occurred or the compression method used is unsupported -
NullPointerException- ifinis null -
IOException- if an I/O error occurs when reading the member header from the underlying stream
Method Details
read
public int read(byte[] buf, int off, int len) throws IOException
len is not zero, the method will block until some input can be decompressed; otherwise, no bytes are read and 0 is returned. If this method returns a nonzero integer n then buf[off] through buf[off+n-1] contain the decompressed data. The content of elements buf[off+n] through buf[off+len-1] is undefined, contrary to the specification of the InputStream superclass, so an implementation is free to modify these elements during the inflate operation. If this method returns -1 or throws an exception then the content of buf[off] through buf[off+len
-1] is undefined.
- Overrides:
-
readin classInflaterInputStream - Parameters:
-
buf- the buffer into which the data is read -
off- the start offset in the destination arraybuf -
len- the maximum number of bytes to read intobuf - Returns:
- the actual number of bytes decompressed from a GZIP member, or -1 if the end-of-stream is reached
- Throws:
-
NullPointerException- Ifbufisnull. -
IndexOutOfBoundsException- Ifoffis negative,lenis negative, orlenis greater thanbuf.length - off -
ZipException- if the compressed input data is corrupt. -
IOException- if the stream is closed or an I/O error has occurred. - See Also:
close
public void close() throws IOException
- Specified by:
-
closein interfaceAutoCloseable - Specified by:
-
closein interfaceCloseable - Overrides:
-
closein classInflaterInputStream - Throws:
-
IOException- if an I/O error has occurred - See Also:
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.