Spec-Zone.ru › OpenJDK 27

Класс JarInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
java.util.zip.InflaterInputStream
java.util.zip.ZipInputStream
java.util.jar.JarInputStream
Все реализуемые интерфейсы:
Closeable, AutoCloseable
public class JarInputStream extends ZipInputStream
Класс JarInputStream, расширяющий ZipInputStream, используется для чтения содержимого JAR-файла из входного потока. Он поддерживает чтение необязательной записи манифеста. Manifest можно использовать для хранения метаинформации о JAR-файле и его записях.

Если не указано иное, передача аргумента null конструктору или методу этого класса приводит к выбрасыванию исключения NullPointerException.

Доступ к манифесту

Метод getManifest используется для получения манифеста из записи META-INF/MANIFEST.MF, если она является первой записью в потоке (или второй, если первая запись в потоке — META-INF/, а вторая — META-INF/MANIFEST.MF).

Методы getNextJarEntry() и getNextEntry() используются для чтения записей JAR-файла из потока. Эти методы пропускают манифест (META-INF/MANIFEST.MF), если он находится в начале потока. Иными словами, эти методы не возвращают запись манифеста, если манифест является первой записью в потоке. Если первой записью является META-INF/, а второй — манифест, эти методы пропускают обе записи. Не определено, пропускают ли эти методы манифест, если он встречается позднее в потоке.

Подписанные JAR-файлы

Объект JarInputStream проверяет подписи записей в подписанном JAR-файле в следующих случаях:
  • Manifest является первой записью в потоке (или второй, если первая запись в потоке — META-INF/, а вторая — META-INF/MANIFEST.MF).
  • Все записи, связанные с подписями, следуют непосредственно за Manifest

После полной проверки JarEntry, которая выполняется чтением до конца входного потока записи, можно вызвать JarEntry.getCertificates(), чтобы получить сертификаты этой записи, и JarEntry.getCodeSigners(), чтобы получить подписантов.

Важно отметить, что процесс проверки не включает проверку сертификата подписанта. Для дальнейшего определения того, заслуживает ли подпись доверия, вызывающему коду следует проверить возвращаемое значение JarEntry.getCodeSigners().

Примечание к API:
Если JarEntry изменена после подписания JAR-файла, при чтении записи будет выброшено исключение SecurityException.
С версии:
1.2
См. также:
  • Manifest
  • ZipInputStream

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

Модификатор и тип Поле Описание
static final int CENATT
Смещение поля внутренних атрибутов файла в заголовке центрального каталога (CEN).
static final int CENATX
Смещение поля внешних атрибутов файла в заголовке центрального каталога (CEN).
static final int CENCOM
Смещение поля длины комментария в заголовке центрального каталога (CEN).
static final int CENCRC
Смещение поля значения CRC-32 несжатого файла в заголовке центрального каталога (CEN).
static final int CENDSK
Смещение поля начального номера диска в заголовке центрального каталога (CEN).
static final int CENEXT
Смещение поля длины дополнительных данных в заголовке центрального каталога (CEN).
static final int CENFLG
Смещение поля флагов шифрования и расшифрования в заголовке центрального каталога (CEN).
static final int CENHDR
Размер заголовка центрального каталога (CEN) в байтах (включая сигнатуру).
static final int CENHOW
Смещение поля метода сжатия в заголовке центрального каталога (CEN).
static final int CENLEN
Смещение поля размера несжатого файла в заголовке центрального каталога (CEN).
static final int CENNAM
Смещение поля длины имени файла в заголовке центрального каталога (CEN).
static final int CENOFF
Смещение поля смещения заголовка LOC в заголовке центрального каталога (CEN).
static final long CENSIG
Сигнатура заголовка центрального каталога (CEN).
static final int CENSIZ
Смещение поля размера сжатого файла в заголовке центрального каталога (CEN).
static final int CENTIM
Смещение поля времени изменения в заголовке центрального каталога (CEN).
static final int CENVEM
Смещение поля версии создавшего заголовок в заголовке центрального каталога (CEN).
static final int CENVER
Смещение поля версии, необходимой для извлечения, в заголовке центрального каталога (CEN).
static final int ENDCOM
Смещение поля длины комментария ZIP-файла в заголовке конца центрального каталога (END).
static final int ENDHDR
Размер заголовка конца центрального каталога (END) в байтах (включая сигнатуру).
static final int ENDOFF
Смещение поля смещения первого заголовка CEN в заголовке конца центрального каталога (END).
static final long ENDSIG
Сигнатура заголовка конца центрального каталога (END).
static final int ENDSIZ
Смещение поля размера центрального каталога в байтах в заголовке конца центрального каталога (END).
static final int ENDSUB
Смещение поля количества записей на этом диске в заголовке конца центрального каталога (END).
static final int ENDTOT
Смещение поля общего количества записей в заголовке конца центрального каталога (END).
static final int EXTCRC
Смещение поля значения CRC-32 несжатого файла в дополнительном локальном заголовке (EXT).
static final int EXTHDR
Размер дополнительного локального заголовка (EXT) в байтах (включая сигнатуру).
static final int EXTLEN
Смещение поля размера несжатого файла в дополнительном локальном заголовке (EXT).
static final long EXTSIG
Сигнатура дополнительного локального заголовка (EXT).
static final int EXTSIZ
Смещение поля размера сжатого файла в дополнительном локальном заголовке (EXT).
static final int LOCCRC
Смещение поля значения CRC-32 несжатого файла в заголовке локального файла (LOC).
static final int LOCEXT
Смещение поля длины дополнительных данных в заголовке локального файла (LOC).
static final int LOCFLG
Смещение поля флагов общего назначения в заголовке локального файла (LOC).
static final int LOCHDR
Размер заголовка локального файла (LOC) в байтах (включая сигнатуру).
static final int LOCHOW
Смещение поля метода сжатия в заголовке локального файла (LOC).
static final int LOCLEN
Смещение поля размера несжатого файла в заголовке локального файла (LOC).
static final int LOCNAM
Смещение поля длины имени файла в заголовке локального файла (LOC).
static final long LOCSIG
Сигнатура заголовка локального файла (LOC).
static final int LOCSIZ
Смещение поля размера сжатого файла в заголовке локального файла (LOC).
static final int LOCTIM
Смещение поля времени изменения в заголовке локального файла (LOC).
static final int LOCVER
Смещение поля версии, необходимой для извлечения, в заголовке локального файла (LOC).

Поля, объявленные в классе InflaterInputStream

buf, inf, len
Модификатор и тип Поле Описание
protected byte[] buf
Входной буфер для распаковки.
protected Inflater inf
Распаковщик для этого потока.
protected int len
Общее количество байтов, прочитанных во входной буфер.

Поля, объявленные в классе FilterInputStream

in
Модификатор и тип Поле Описание
protected InputStream in
Входной поток, подлежащий фильтрации.

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

Конструктор Описание
JarInputStream(InputStream in)
Создает новый JarInputStream и считывает необязательный манифест.
JarInputStream(InputStream in, boolean verify)
Создает новый JarInputStream и считывает необязательный манифест.

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

Модификатор и тип Метод Описание
protected ZipEntry createZipEntry(String name)
Создает новую запись JarEntry (ZipEntry) с указанным именем записи JAR-файла.
Manifest getManifest()
Возвращает Manifest для этого JAR-файла, если она является первой записью в потоке (или второй, если первая запись в потоке — META-INF/, а вторая — META-INF/MANIFEST.MF), или null в противном случае.
ZipEntry getNextEntry()
Читает следующую запись ZIP-файла и устанавливает позицию потока в начало данных записи.
JarEntry getNextJarEntry()
Читает следующую запись JAR-файла и устанавливает позицию потока в начало данных записи.
int read(byte[] b, int off, int len)
Читает данные текущей записи JAR в массив байтов и возвращает количество распакованных байтов.

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

available, close, closeEntry, read, readAllBytes, readNBytes, readNBytes, skip, skipNBytes, transferTo
Модификатор и тип Метод Описание
int available()
Возвращает 0, если обнаружен конец потока для текущей записи ZIP или для текущей записи ZIP был вызван метод ZipInputStream.closeEntry(); в противном случае возвращает 1.
void close()
Закрывает этот входной поток и освобождает связанные с ним системные ресурсы.
void closeEntry()
Закрывает текущую запись ZIP и устанавливает позицию потока для чтения следующей записи.
int read()
Читает следующий байт данных из входного потока для текущей записи ZIP.
byte[] readAllBytes()
Читает все оставшиеся байты из входного потока для текущей записи ZIP.
int readNBytes(byte[] b, int off, int len)
Читает указанное количество байтов из входного потока в заданный массив байтов для текущей записи ZIP и возвращает количество распакованных байтов.
byte[] readNBytes(int len)
Читает из входного потока для текущей записи ZIP не более указанного количества байтов.
long skip(long n)
Пропускает и отбрасывает n байтов данных из этого входного потока для текущей записи ZIP.
void skipNBytes(long n)
Пропускает и отбрасывает ровно n байтов данных из этого входного потока для текущей записи ZIP.
long transferTo(OutputStream out)
Читает все байты из этого входного потока для текущей записи ZIP и записывает их в заданный выходной поток в порядке чтения.

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

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

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

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

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

nullInputStream
Модификатор и тип Метод Описание
static InputStream nullInputStream()
Возвращает новый InputStream, который не читает байты.

Методы, объявленные в классе 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, либо до истечения заданного промежутка реального времени.

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

LOCSIG

static final long LOCSIG
Сигнатура заголовка локального файла (LOC).
См. также:
  • Значения констант полей

EXTSIG

static final long EXTSIG
Сигнатура дополнительного заголовка локального файла (EXT).
См. также:
  • Значения констант полей

CENSIG

static final long CENSIG
Сигнатура заголовка центрального каталога (CEN).
См. также:
  • Значения констант полей

ENDSIG

static final long ENDSIG
Сигнатура заголовка конца центрального каталога (END).
См. также:
  • Значения констант полей

LOCHDR

static final int LOCHDR
Размер заголовка локального файла (LOC) в байтах (включая сигнатуру).
См. также:
  • Значения констант полей

EXTHDR

static final int EXTHDR
Размер дополнительного заголовка локального файла (EXT) в байтах (включая сигнатуру).
См. также:
  • Значения констант полей

CENHDR

static final int CENHDR
Размер заголовка центрального каталога (CEN) в байтах (включая сигнатуру).
См. также:
  • Значения констант полей

ENDHDR

static final int ENDHDR
Размер заголовка конца центрального каталога (END) в байтах (включая сигнатуру).
См. также:
  • Значения констант полей

LOCVER

static final int LOCVER
Смещение поля версии, необходимой для извлечения данных из заголовка локального файла (LOC).
См. также:
  • Значения констант полей

LOCFLG

static final int LOCFLG
Смещение поля флагов общего назначения в заголовке локального файла (LOC).
См. также:
  • Значения констант полей

LOCHOW

static final int LOCHOW
Смещение поля метода сжатия в заголовке локального файла (LOC).
См. также:
  • Значения констант полей

LOCTIM

static final int LOCTIM
Смещение поля времени изменения в заголовке локального файла (LOC).
См. также:
  • Значения констант полей

LOCCRC

static final int LOCCRC
Смещение поля значения CRC-32 несжатого файла в заголовке локального файла (LOC).
См. также:
  • Значения констант полей

LOCSIZ

static final int LOCSIZ
Смещение поля размера сжатого файла в заголовке локального файла (LOC).
См. также:
  • Значения констант полей

LOCLEN

static final int LOCLEN
Смещение поля размера несжатого файла в заголовке локального файла (LOC).
См. также:
  • Значения констант полей

LOCNAM

static final int LOCNAM
Смещение поля длины имени файла в заголовке локального файла (LOC).
См. также:
  • Значения констант полей

LOCEXT

static final int LOCEXT
Смещение поля длины дополнительных данных в заголовке локального файла (LOC).
См. также:
  • Значения констант полей

EXTCRC

static final int EXTCRC
Смещение поля значения CRC-32 несжатого файла в дополнительном заголовке локального файла (EXT).
См. также:
  • Значения констант полей

EXTSIZ

static final int EXTSIZ
Смещение поля размера сжатого файла в дополнительном заголовке локального файла (EXT).
См. также:
  • Значения констант полей

EXTLEN

static final int EXTLEN
Смещение поля размера несжатого файла в дополнительном заголовке локального файла (EXT).
См. также:
  • Значения констант полей

CENVEM

static final int CENVEM
Смещение поля версии программы-создателя в заголовке центрального каталога (CEN).
См. также:
  • Значения констант полей

CENVER

static final int CENVER
Смещение поля версии, необходимой для извлечения данных из заголовка центрального каталога (CEN).
См. также:
  • Значения констант полей

CENFLG

static final int CENFLG
Смещение поля флагов шифрования и расшифрования в заголовке центрального каталога (CEN).
См. также:
  • Значения констант полей

CENHOW

static final int CENHOW
Смещение поля метода сжатия в заголовке центрального каталога (CEN).
См. также:
  • Значения констант полей

CENTIM

static final int CENTIM
Смещение поля времени изменения в заголовке центрального каталога (CEN).
См. также:
  • Значения констант полей

CENCRC

static final int CENCRC
Смещение поля значения CRC-32 несжатого файла в заголовке центрального каталога (CEN).
См. также:
  • Значения констант полей

CENSIZ

static final int CENSIZ
Смещение поля размера сжатого файла в заголовке центрального каталога (CEN).
См. также:
  • Значения констант полей

CENLEN

static final int CENLEN
Смещение поля размера несжатого файла в заголовке центрального каталога (CEN).
См. также:
  • Значения констант полей

CENNAM

static final int CENNAM
Смещение поля длины имени файла в заголовке центрального каталога (CEN).
См. также:
  • Значения констант полей

CENEXT

static final int CENEXT
Смещение поля длины дополнительных данных в заголовке центрального каталога (CEN).
См. также:
  • Значения констант полей

CENCOM

static final int CENCOM
Смещение поля длины комментария в заголовке центрального каталога (CEN).
См. также:
  • Значения констант полей

CENDSK

static final int CENDSK
Смещение поля номера диска, с которого начинается запись, в заголовке центрального каталога (CEN).
См. также:
  • Значения констант полей

CENATT

static final int CENATT
Смещение поля внутренних атрибутов файла в заголовке центрального каталога (CEN).
См. также:
  • Значения констант полей

CENATX

static final int CENATX
Смещение поля внешних атрибутов файла в заголовке центрального каталога (CEN).
См. также:
  • Значения констант полей

CENOFF

static final int CENOFF
Смещение поля смещения заголовка LOC в заголовке центрального каталога (CEN).
См. также:
  • Значения констант полей

ENDSUB

static final int ENDSUB
Смещение поля количества записей на этом диске в заголовке конца центрального каталога (END).
См. также:
  • Значения констант полей

ENDTOT

static final int ENDTOT
Смещение поля общего количества записей в заголовке конца центрального каталога (END).
См. также:
  • Значения констант полей

ENDSIZ

static final int ENDSIZ
Смещение поля размера центрального каталога в байтах в заголовке конца центрального каталога (END).
См. также:
  • Значения констант полей

ENDOFF

static final int ENDOFF
Смещение поля смещения первого заголовка CEN в заголовке конца центрального каталога (END).
См. также:
  • Значения констант полей

ENDCOM

static final int ENDCOM
Смещение поля длины комментария ZIP-файла в заголовке конца центрального каталога (END).
См. также:
  • Значения констант полей

Подробное описание конструкторов

JarInputStream

public JarInputStream(InputStream in) throws IOException
Создает новый JarInputStream и считывает необязательный манифест. Если манифест присутствует, также пытается проверить подписи, если JarInputStream подписан.
Параметры:
in — фактический входной поток
Исключения:
IOException — если произошла ошибка ввода-вывода

JarInputStream

public JarInputStream(InputStream in, boolean verify) throws IOException
Создает новый JarInputStream и считывает необязательный манифест. Если манифест присутствует и verify имеет значение true, также пытается проверить подписи, если JarInputStream подписан.
Параметры:
in — фактический входной поток
verify — следует ли проверять JarInputStream, если он подписан.
Исключения:
IOException — если произошла ошибка ввода-вывода

Подробное описание методов

getManifest

public Manifest getManifest()
Возвращает Manifest для этого JAR-файла, если это первая запись в потоке (или вторая запись, если первая запись в потоке — META-INF/, а вторая — META-INF/MANIFEST.MF); в противном случае возвращает null.
Возвращает:
Manifest для этого JAR-файла или null в противном случае.

getNextEntry

public ZipEntry getNextEntry() throws IOException
Считывает следующую запись ZIP-файла и устанавливает позицию потока в начало данных записи. Если проверка включена, любая обнаруженная недействительная подпись при позиционировании потока для следующей записи приведет к исключению.
Переопределяет:
getNextEntry в классе ZipInputStream
Возвращает:
следующую запись ZIP-файла или null, если записей больше нет
Исключения:
ZipException — если произошла ошибка ZIP-файла
IOException — если произошла ошибка ввода-вывода
SecurityException — если какая-либо запись JAR-файла подписана неправильно.

getNextJarEntry

public JarEntry getNextJarEntry() throws IOException
Считывает следующую запись JAR-файла и устанавливает позицию потока в начало данных записи. Если проверка включена, любая обнаруженная недействительная подпись при позиционировании потока для следующей записи приведет к исключению.
Возвращает:
следующую запись JAR-файла или null, если записей больше нет
Исключения:
ZipException — если произошла ошибка ZIP-файла
IOException — если произошла ошибка ввода-вывода
SecurityException — если какая-либо запись JAR-файла подписана неправильно.

read

public int read(byte[] b, int off, int len) throws IOException
Считывает данные из текущей записи JAR в массив байтов и возвращает количество распакованных байтов. Если 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 в классе ZipInputStream
Параметры:
b — буфер, в который считываются данные
off — начальное смещение в массиве назначения b
len — максимальное количество байтов для считывания
Возвращает:
фактическое количество считанных байтов или -1, если достигнут конец записи
Исключения:
IndexOutOfBoundsException — если off отрицательно, len отрицательно или len больше b.length - off
ZipException — если произошла ошибка ZIP-файла
IOException — если произошла ошибка ввода-вывода
SecurityException — если какая-либо запись JAR-файла подписана неправильно.
См. также:
  • FilterInputStream.in

createZipEntry

protected ZipEntry createZipEntry(String name)
Создает новый JarEntry (ZipEntry) для указанного имени записи JAR-файла. Атрибуты манифеста для указанного имени записи JAR-файла копируются в новый JarEntry.
Переопределяет:
createZipEntry в классе ZipInputStream
Параметры:
name — имя записи JAR/ZIP-файла
Возвращает:
только что созданный объект JarEntry

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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