Spec-Zone.ru › OpenJDK 27

Класс GZIPInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
java.util.zip.InflaterInputStream
java.util.zip.GZIPInputStream
Все реализуемые интерфейсы:
Closeable, AutoCloseable
public class GZIPInputStream extends InflaterInputStream
Этот класс реализует фильтр потока для распаковки данных в формате файла GZIP.

Формат файла 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
Внешние спецификации
  • RFC 1952: спецификация формата файла GZIP, версия 4.3
См. также:
  • InflaterInputStream

Краткое описание полей

Модификатор и тип Поле Описание
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(InputStream in)
Создает новый входной поток с размером буфера по умолчанию.
GZIPInputStream(InputStream in, int size)
Создает новый входной поток с указанным размером буфера.

Краткое описание методов

Модификатор и тип Метод Описание
void close()
Закрывает этот входной поток и освобождает все системные ресурсы, связанные с ним.
int read(byte[] buf, int off, int len)
Читает распакованные данные в массив байтов и возвращает количество распакованных байтов.

Методы, объявленные в классе InflaterInputStream

available, fill, mark, markSupported, read, reset, skip
Модификатор и тип Метод Описание
int available()
После достижения конца файла возвращает 0, в противном случае всегда возвращает 1.
protected void fill()
Заполняет входной буфер дополнительными данными для распаковки.
void mark(int readlimit)
Помечает текущую позицию в этом входном потоке.
boolean markSupported()
Проверяет, поддерживает ли этот входной поток методы mark и reset.
int read()
Читает байт несжатых данных.
void reset()
Перемещает этот поток в позицию, соответствующую моменту последнего вызова метода mark для этого входного потока.
long skip(long n)
Пропускает указанное количество байтов несжатых данных.

Методы, объявленные в классе FilterInputStream

read
Модификатор и тип Метод Описание
int read(byte[] b)
Читает из этого входного потока в массив байтов не более b.length байтов данных.

Методы, объявленные в классе InputStream

nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
Модификатор и тип Метод Описание
static InputStream nullInputStream()
Возвращает новый InputStream, который не читает байты.
byte[] readAllBytes()
Читает все оставшиеся байты из входного потока.
int readNBytes(byte[] b, int off, int len)
Читает запрошенное количество байтов из входного потока в указанный массив байтов.
byte[] readNBytes(int len)
Читает из входного потока не более указанного количества байтов.
void skipNBytes(long n)
Пропускает и отбрасывает ровно n байтов данных из этого входного потока.
long transferTo(OutputStream out)
Читает все байты из этого входного потока и записывает их в указанный выходной поток в том порядке, в котором они были прочитаны.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
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(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определенного времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определенного времени.

Подробное описание полей

GZIP_MAGIC

public static final int GZIP_MAGIC
Магическое число заголовка GZIP.
См. также:
  • Значения константных полей

crc

protected CRC32 crc
CRC-32 для распакованных данных.

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 — если поток закрыт или произошла ошибка ввода-вывода.
См. также:
  • Формат файла GZIP

close

public void close() throws IOException
Закрывает этот входной поток и освобождает все системные ресурсы, связанные с ним.
Определен в:
close в интерфейсе AutoCloseable
Определен в:
close в интерфейсе Closeable
Переопределяет:
close в классе InflaterInputStream
Исключения:
IOException — если произошла ошибка ввода-вывода
См. также:
  • FilterInputStream.in

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API