- すべての実装されたインタフェース:
Closeable,AutoCloseable
ZipInputStreamを拡張するJarInputStreamクラスは、入力ストリームからJARファイルの内容を読み取るために使用されます。 オプションの「マニフェスト」エントリの読取りをサポートします。 Manifestエントリは、JARファイルとそのエントリのメタ情報を格納するために使います。
マニフェストへのアクセス
getManifestメソッドは、ストリーム(または、ストリームの最初のエントリがMETA-INF/で、2番目のエントリがMETA-INF/MANIFEST.MFの場合の2番目のエントリ)の最初のエントリである場合に、エントリMETA-INF/MANIFEST.MFから「マニフェスト」を返すために使用されます。
getNextJarEntry()およびgetNextEntry()メソッドは、ストリームからJARファイル・エントリを読み取るために使用されます。 これらのメソッドは、ストリームの先頭にあるマニフェスト(META-INF/MANIFEST.MF)をスキップします。 つまり、マニフェストがストリームの最初のエントリである場合、これらのメソッドはマニフェストのエントリを返しません。 最初のエントリがMETA-INF/で、2番目のエントリがマニフェストの場合、これらのメソッドによって両方がスキップされます。 これらのメソッドが、ストリームの後半に出現したときにマニフェストをスキップするかどうかは指定されません。
署名済JARファイル
JarInputStreamは、次の場合に「署名済JARファイル」内のエントリのシグネチャを検証します:
-
Manifestは、ストリーム(または、ストリームの最初のエントリがMETA-INF/で、2番目のエントリがMETA-INF/MANIFEST.MFの場合の2番目のエントリ)の最初のエントリです。 -
すべてのシグネチャ関連エントリが
Manifestの直後に続く
エントリの入力ストリームが終了するまで読み取ることによってJarEntryが完全に検証されると、JarEntry.getCertificates()をコールしてこのエントリの証明書を取得し、JarEntry.getCodeSigners()をコールして署名者を取得できます。
検証プロセスには署名者の証明書の検証が含まれていないことに注意してください。 呼出し側で、JarEntry.getCodeSigners()の戻り値を検査し、署名が信頼できるかどうかをさらに判断してください。
- APIのノート:
- JARファイルの署名後に
JarEntryが変更されると、エントリの読取り時にSecurityExceptionがスローされます。 - 導入されたバージョン:
- 1.2
- 関連項目:
-
フィールドのサマリー
フィールド修飾子と型フィールド説明static final int中央ディレクトリの(CEN)ヘッダー内部ファイル属性のフィールド・オフセット。static final int中央ディレクトリの(CEN)ヘッダー外部ファイル属性フィールド・オフセット。static final int中央ディレクトリの(CEN)ヘッダー・コメント長フィールド・オフセット。static final int中央ディレクトリの(CEN)ヘッダー非圧縮ファイルのcrc-32値フィールド・オフセット。static final int中央ディレクトリの(CEN)ヘッダー・ディスク番号の開始フィールド・オフセット。static final int中央ディレクトリの(CEN)ヘッダーの追加フィールド長フィールド・オフセット。static final int中央ディレクトリの(CEN)ヘッダー暗号化、復号化フラグのフィールド・オフセット。static final int中央ディレクトリの(CEN)ヘッダー・サイズ(バイト単位、(シグネチャを含む))。static final int中央ディレクトリの(CEN)ヘッダー圧縮メソッドのフィールド・オフセット。static final int中央ディレクトリの(CEN)ヘッダーの非圧縮サイズ・フィールド・オフセット。static final int中央ディレクトリの(CEN)ヘッダーのファイル名の長さフィールド・オフセット。static final int中央ディレクトリの(CEN)ヘッダーLOCヘッダーのオフセット・フィールドのオフセット。static final long中央ディレクトリの(CEN)ヘッダー・シグネチャ。static final int中央ディレクトリの(CEN)ヘッダー圧縮サイズ・フィールド・オフセット。static final int中央ディレクトリの(CEN)ヘッダー変更時間フィールド・オフセット。static final intフィールド・オフセットによって作成される中央ディレクトリ(CEN)ヘッダー・バージョン。static final intフィールド・オフセットの抽出に必要な中央ディレクトリ(CEN)ヘッダー・バージョン。static final int中央ディレクトリの(END)ヘッダーzipファイルのコメント長フィールド・オフセットの終わり。static final int中央ディレクトリの(END)ヘッダー・サイズの終了(バイト単位、(シグネチャを含む))。static final int最初のCENヘッダー・フィールドのオフセットに対する中央ディレクトリ(END)ヘッダー・オフセットの終了。static final long中央ディレクトリの(END)ヘッダー・シグネチャの終了。static final int中央ディレクトリの(END)ヘッダー中央ディレクトリ・サイズ(バイト単位)フィールド・オフセットの終了。static final intこのディスク・フィールド・オフセット上のエントリの中央ディレクトリ(END)ヘッダー番号の終わり。static final int中央ディレクトリの(END)ヘッダーの入力フィールド・オフセットの合計数。static final int圧縮されていない余分なローカル(EXT)ヘッダーのcrc-32値フィールド・オフセット。static final int追加のローカル(EXT)ヘッダー・サイズ(バイト数(シグネチャを含む))。static final int余分なローカル(EXT)ヘッダーの非圧縮サイズ・フィールド・オフセット。static final long追加のローカル(EXT)ヘッダー・シグネチャ。static final int追加のローカル(EXT)ヘッダー圧縮サイズ・フィールド・オフセット。static final intローカル・ファイル(LOC)ヘッダー非圧縮ファイルcrc-32値フィールド・オフセット。static final intローカル・ファイル(LOC)ヘッダーの追加フィールド長フィールド・オフセット。static final intローカル・ファイル(LOC)ヘッダー汎用ビット・フラグ・フィールド・オフセット。static final intローカル・ファイルの(LOC)ヘッダー・サイズ(バイト単位、(シグネチャを含む))。static final intローカル・ファイル(LOC)ヘッダー圧縮メソッドのフィールド・オフセット。static final intローカル・ファイル(LOC)ヘッダーの非圧縮サイズ・フィールド・オフセット。static final intローカル・ファイル(LOC)ヘッダーのファイル名の長さフィールド・オフセット。static final longローカル・ファイル(LOC)ヘッダーのシグネチャ。static final intローカル・ファイルの(LOC)ヘッダー圧縮サイズ・フィールドのオフセット。static final intローカル・ファイル(LOC)ヘッダー変更時間フィールド・オフセット。static final intフィールド・オフセットの抽出に必要なローカル・ファイル(LOC)ヘッダー・バージョン。クラス java.util.zip.InflaterInputStreamで宣言されたフィールド
buf, inf, lenクラス java.io.FilterInputStreamで宣言されたフィールド
in -
コンストラクタのサマリー
コンストラクタコンストラクタ説明新しいJarInputStreamを作成して、オプションのマニフェストを読み込みます。JarInputStream(InputStream in, boolean verify) 新しいJarInputStreamを作成して、オプションのマニフェストを読み込みます。 -
メソッドのサマリー
修飾子と型メソッド説明protected ZipEntrycreateZipEntry(String name) 指定されたJARファイルのエントリ名に新しいJarEntry(ZipEntry)を作成します。ストリーム(または、ストリームの最初のエントリがMETA-INF/で、2番目のエントリがMETA-INF/MANIFEST.MFの場合の2番目のエントリ)の最初のエントリの場合はこのJARファイルのManifestを返し、それ以外の場合はnullを返します。次のZIPファイル・エントリを読み取って、エントリ・データの先頭にストリームを配置します。次のJARファイル・エントリを読み取って、エントリ・データの先頭にストリームを位置付けます。intread(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
-
フィールド詳細
-
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ローカル・ファイル(LOC)ヘッダー非圧縮ファイルcrc-32値フィールド・オフセット。- 関連項目:
-
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圧縮されていない余分なローカル(EXT)ヘッダーのcrc-32値フィールド・オフセット。- 関連項目:
-
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中央ディレクトリの(CEN)ヘッダー非圧縮ファイルのcrc-32値フィールド・オフセット。- 関連項目:
-
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中央ディレクトリの(CEN)ヘッダーLOCヘッダーのオフセット・フィールドのオフセット。- 関連項目:
-
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中央ディレクトリの(END)ヘッダーzipファイルのコメント長フィールド・オフセットの終わり。- 関連項目:
-
-
コンストラクタの詳細
-
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()ストリーム(または、ストリームの最初のエントリがMETA-INF/で、2番目のエントリがMETA-INF/MANIFEST.MFの場合の2番目のエントリ)の最初のエントリの場合はこのJARファイルのManifestを返し、それ以外の場合はnullを返します。- 戻り値:
- このJARファイルの
Manifest、またはそれ以外の場合は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でない場合、このメソッドは入力の一部が利用できるようになるまでブロックされます。それ以外の場合、バイトは読み込まれず、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- 転送先配列の開始オフセットblen- 読み込む最大バイト数- 戻り値:
- 実際に読み込まれたバイト数。エントリの最後に達した場合は -1
- 例外:
NullPointerException-bがnullである場合。IndexOutOfBoundsException-offが負の値の場合、lenが負の値の場合、あるいはlenがb.length - offより大きい場合ZipException- ZIPファイル・エラーが発生した場合IOException- 入出力エラーが発生した場合SecurityException- jarファイル・エントリが誤って署名された場合。- 関連項目:
-
createZipEntry
指定されたJARファイルのエントリ名に新しいJarEntry(ZipEntry)を作成します。 指定されたJARファイル・エントリ名のマニフェスト属性は、新規JarEntryにコピーされます。- オーバーライド:
createZipEntry、クラスZipInputStream- パラメータ:
name- JAR/ZIPファイル・エントリの名前- 戻り値:
- 作成された
JarEntryオブジェクト
-