Spec-Zone.ru › OpenJDK 24

Класс 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. Manifest может использоваться для хранения метаданных о файле JAR и его записях.

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

Доступ к Manifest

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

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

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

Подписанный JAR-файл проверяет подписи записей в Подписанном 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).

Поля, объявленные в классе java.util.zip.InflaterInputStream

buf, inf, len

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

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-файла в массив байтов, возвращая количество распакованных байтов.

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

available, close, closeEntry, read, readAllBytes, readNBytes, readNBytes, skip, skipNBytes, transferTo

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

fill, mark, markSupported, reset

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

read

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

nullInputStream

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

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).
См. также:
  • Значения константных полей
END_OF_DOCUMENT_MARKER

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 подписаны неверно.

чтение

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, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 США.
Все права защищены. Использование подчиняется условиям лицензии и политике перераспределения документации.
ПРОЕКТ 24-ea+36-Debian-1

© 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.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/jar/JarInputStream.html

Spec-Zone.ru

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