Класс GZIPInputStream
- Все реализуемые интерфейсы:
Closeable, AutoCloseable
public class GZIPInputStream extends InflaterInputStream
Формат файла GZIP
Формат файла GZIP определен в RFC 1952. Формат, описанный в разделе 2.2 RFC, состоит из последовательности «членов», расположенных в потоке один за другим без дополнительной информации до, между или после них. Каждый член состоит из заголовка, за которым следуют данные, сжатые с помощью алгоритмаdeflate, а затем трейлер. Этот класс способен читать поток, состоящий из последовательности членов.
Чтение из потока может привести к чтению и буферизации байтов из базового потока. Сюда входят байты, следующие за трейлером члена. Независимо от того, были ли прочитаны какие-либо дополнительные байты после трейлера члена, методы чтения этого класса возвращают распакованные данные не более чем из одного члена; данные из нескольких членов не объединяются в одной операции чтения.
Потокобезопасность
GZIPInputStream небезопасен для использования несколькими одновременно работающими потоками. Любое многопоточное параллельное использование должно быть защищено соответствующей синхронизацией.- Примечание по API:
- Для освобождения ресурсов, используемых этим потоком, следует вызвать метод
close()напрямую или с помощью оператораtry-with-resources. - Примечание по реализации:
- После чтения трейлера члена метод read вызывает
InputStream.available()для базового потока, чтобы определить, доступны ли дополнительные байты, которые могут представлять следующий член. Если системное свойствоjdk.util.gzip.tryReadAheadAfterTrailerустановлено в значениеtrue, вызовInputStream.available()пропускается, и реализация вместо этого пытается прочитать следующий член из потока.GZIPInputStreamзависит от возвращаемого значенияInputStream.available()для надежной обработки потока, содержащего последовательность членов. Поэтому в средах, обрабатывающих потоки с последовательностью членов, может потребоваться установить это свойство. По умолчанию системное свойствоjdk.util.gzip.tryReadAheadAfterTrailerне установлено, и вызываетсяInputStream.available(). - Начиная с версии:
- 1.1
- Внешние спецификации
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected CRC32 |
crc |
CRC-32 для распакованных данных. |
protected boolean |
eos |
Указывает на конец входного потока. |
static final int |
GZIP_MAGIC |
Магическое число заголовка GZIP. |
Поля, объявленные в классе InflaterInputStream
buf, inf, len | Модификатор и тип | Поле | Описание |
|---|---|---|
protected byte[] |
buf |
Входной буфер для распаковки. |
protected Inflater |
inf |
Распаковщик для этого потока. |
protected int |
len |
Общее количество байтов, прочитанных во входной буфер. |
Поля, объявленные в классе FilterInputStream
in | Модификатор и тип | Поле | Описание |
|---|---|---|
protected InputStream |
in |
Входной поток, к которому применяется фильтр. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
GZIPInputStream |
Создает новый входной поток с размером буфера по умолчанию. |
GZIPInputStream |
Создает новый входной поток с указанным размером буфера. |
Краткое описание методов
Методы, объявленные в классе InflaterInputStream
available, fill, mark, markSupported, read, reset, skip | Модификатор и тип | Метод | Описание |
|---|---|---|
int |
available() |
После достижения конца файла возвращает 0, в противном случае всегда возвращает 1. |
protected void |
fill() |
Заполняет входной буфер дополнительными данными для распаковки. |
void |
mark |
Помечает текущую позицию в этом входном потоке. |
boolean |
markSupported() |
Проверяет, поддерживает ли этот входной поток методы mark и reset. |
int |
read() |
Читает байт несжатых данных. |
void |
reset() |
Перемещает этот поток в позицию, соответствующую моменту последнего вызова метода mark для этого входного потока. |
long |
skip |
Пропускает указанное количество байтов несжатых данных. |
Методы, объявленные в классе FilterInputStream
read | Модификатор и тип | Метод | Описание |
|---|---|---|
int |
read |
Читает из этого входного потока в массив байтов не более b.length байтов данных. |
Методы, объявленные в классе InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo | Модификатор и тип | Метод | Описание |
|---|---|---|
static InputStream |
nullInputStream() |
Возвращает новый InputStream, который не читает байты. |
byte[] |
readAllBytes() |
Читает все оставшиеся байты из входного потока. |
int |
readNBytes |
Читает запрошенное количество байтов из входного потока в указанный массив байтов. |
byte[] |
readNBytes |
Читает из входного потока не более указанного количества байтов. |
void |
skipNBytes |
Пропускает и отбрасывает ровно n байтов данных из этого входного потока. |
long |
transferTo |
Читает все байты из этого входного потока и записывает их в указанный выходной поток в том порядке, в котором они были прочитаны. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект какому-либо другому объекту. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удален в будущей версии. Финализация устарела и может быть удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определенного времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определенного времени. |
Подробное описание полей
GZIP_MAGIC
public static final int GZIP_MAGIC
- См. также:
crc
protected CRC32 crc
eos
protected boolean eos
Подробное описание конструкторов
GZIPInputStream
public GZIPInputStream(InputStream in, int size) throws IOException
- Параметры:
-
in— входной поток -
size— размер входного буфера - Исключения:
-
ZipException— если произошла ошибка формата GZIP или используется неподдерживаемый метод сжатия -
NullPointerException— еслиinимеет значение null -
IOException— если при чтении заголовка члена из базового потока произошла ошибка ввода-вывода -
IllegalArgumentException— еслиsize <= 0
GZIPInputStream
public GZIPInputStream(InputStream in) throws IOException
- Параметры:
-
in— входной поток - Исключения:
-
ZipException— если произошла ошибка формата GZIP или используется неподдерживаемый метод сжатия -
NullPointerException— еслиinимеет значение null -
IOException— если при чтении заголовка члена из базового потока произошла ошибка ввода-вывода
Подробное описание методов
read
public int read(byte[] buf, int off, int len) throws IOException
len не равно нулю, метод будет блокироваться до тех пор, пока не появятся данные, которые можно распаковать; в противном случае байты не читаются и возвращается 0. Если этот метод возвращает ненулевое целое число n, то buf[off] по buf[off+n-1] содержат распакованные данные. Содержимое элементов buf[off+n] по buf[off+len-1] не определено, вопреки спецификации суперкласса InputStream, поэтому реализация может изменять эти элементы во время операции распаковки. Если этот метод возвращает -1 или выбрасывает исключение, содержимое элементов от buf[off] до buf[off+len
-1] не определено.
- Переопределяет:
-
readв классеInflaterInputStream - Параметры:
-
buf— буфер, в который считываются данные -
off— начальное смещение в целевом массивеbuf -
len— максимальное количество байтов для чтения вbuf - Возвращает:
- фактическое количество байтов, распакованных из члена GZIP, или -1, если достигнут конец потока
- Исключения:
-
NullPointerException— еслиbufимеет значениеnull. -
IndexOutOfBoundsException— еслиoffотрицательно,lenотрицательно илиlenбольшеbuf.length - off -
ZipException— если сжатые входные данные повреждены. -
IOException— если поток закрыт или произошла ошибка ввода-вывода. - См. также:
close
public void close() throws IOException
- Определен в:
-
closeв интерфейсеAutoCloseable - Определен в:
-
closeв интерфейсеCloseable - Переопределяет:
-
closeв классеInflaterInputStream - Исключения:
-
IOException— если произошла ошибка ввода-вывода - См. также:
© 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.