クラスJarInputStream

すべての実装されたインタフェース:
Closeable, AutoCloseable

public class JarInputStream extends ZipInputStream
ZipInputStreamを拡張するJarInputStreamクラスは、入力ストリームからJARファイルの内容を読み取るために使用されます。 オプションの「マニフェスト」エントリの読取りをサポートします。 Manifestエントリは、JARファイルとそのエントリのメタ情報を格納するために使います。

ほかで指定がない場合、null引数をコンストラクタまたはこのクラスのメソッドへ渡すと、NullPointerExceptionがスローされます。

マニフェストへのアクセス

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)ヘッダー・バージョン。

    クラスで宣言されたフィールド InflaterInputStream

    buf, inf, len
    修飾子と型
    フィールド
    説明
    protected byte[]
    圧縮解除に使用する入力バッファです。
    protected Inflater
    このストリームに使用するデコンプレッサです。
    protected int
    入力バッファに読み込まれた合計バイト数。

    クラスで宣言されたフィールド FilterInputStream

    in
    修飾子と型
    フィールド
    説明
    protected InputStream
    フィルタ処理される入力ストリームです。
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    新しいJarInputStreamを作成して、オプションのマニフェストを読み込みます。
    JarInputStream(InputStream in, boolean verify)
    新しいJarInputStreamを作成して、オプションのマニフェストを読み込みます。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    protected ZipEntry
    指定されたJARファイルのエントリ名に新しいJarEntry (ZipEntry)を作成します。
    ストリーム(または、ストリームの最初のエントリがMETA-INF/で、2番目のエントリがMETA-INF/MANIFEST.MFの場合の2番目のエントリ)の最初のエントリの場合はこのJARファイルのManifestを返し、それ以外の場合はnullを返します。
    次のZIPファイル・エントリを読み取って、エントリ・データの先頭にストリームを配置します。
    次のJARファイル・エントリを読み取って、エントリ・データの先頭にストリームを位置付けます。
    int
    read(byte[] b, int off, int len)
    現在のJARエントリからバイトの配列に読み込まれ、膨張したバイト数を返します。

    クラスで宣言されたメソッド ZipInputStream

    available, close, closeEntry, read, readAllBytes, readNBytes, readNBytes, skip, skipNBytes, transferTo
    修飾子と型
    メソッド
    説明
    int
    現在のZIPエントリでストリームの終了が検出された場合、または現在のZIPエントリでZipInputStream.closeEntry()がコールされた場合は0を返し、それ以外の場合は1を返します。
    void
    この入力ストリームを閉じて、そのストリームに関連するすべてのシステム・リソースを解放します。
    void
    現在のZIPエントリを閉じ、次のエントリを読み込むためにストリームを配置します。
    int
    現在のZIPエントリの入力ストリームからデータの次のバイトを読み取ります。
    byte[]
    現在のZIPエントリの入力ストリームから残りのバイトをすべて読み取ります。
    int
    readNBytes(byte[] b, int off, int len)
    現在のZIPエントリについて、入力ストリームから指定されたバイト配列にリクエストされたバイト数を読み取り、膨脹したバイト数を返します。
    byte[]
    readNBytes(int len)
    現在のZIPエントリの入力ストリームから、指定されたバイト数まで読み取ります。
    long
    skip(long n)
    現在のZIPエントリについて、この入力ストリームからnバイトのデータをスキップして破棄します。
    void
    skipNBytes(long n)
    この入力ストリームから、現在のZIPエントリに対して正確にnバイトのデータをスキップして破棄します。
    long
    現在のZIPエントリのこの入力ストリームからすべてのバイトを読み取り、指定された出力ストリームにそのバイトが読み取られた順序で書き込みます。

    クラスで宣言されたメソッド InflaterInputStream

    fill, mark, markSupported, reset
    修飾子と型
    メソッド
    説明
    protected void
    入力バッファを、圧縮解除するデータで満たします。
    void
    mark(int readlimit)
    この入力ストリームの現在位置にマークを設定します。
    boolean
    この入力ストリームがmarkおよびresetメソッドをサポートしているかどうかを判定します。
    void
    このストリームを、この入力ストリームで最後にmarkメソッドが呼び出されたときの位置に再配置します。

    クラスで宣言されたメソッド FilterInputStream

    read
    修飾子と型
    メソッド
    説明
    int
    read(byte[] b)
    最大b.lengthバイトのデータを、この入力ストリームからバイト配列に読み込みます。

    クラスで宣言されたメソッド InputStream

    nullInputStream
    修飾子と型
    メソッド
    説明
    バイトを読み取らない新しいInputStreamを返します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • フィールド詳細

    • 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 - 転送先配列の開始オフセットb
      len - 読み込む最大バイト数
      戻り値:
      実際に読み込まれたバイト数。エントリの最後に達した場合は -1
      スロー:
      IndexOutOfBoundsException - offが負の値の場合、lenが負の値の場合、あるいはlenb.length - offより大きい場合
      ZipException - ZIPファイル・エラーが発生した場合
      IOException - 入出力エラーが発生した場合
      SecurityException - jarファイル・エントリが誤って署名された場合。
      関連項目:
    • createZipEntry

      protected ZipEntry createZipEntry(String name)
      指定されたJARファイルのエントリ名に新しいJarEntry (ZipEntry)を作成します。 指定されたJARファイル・エントリ名のマニフェスト属性は、新規JarEntryにコピーされます。
      オーバーライド:
      createZipEntry、クラスZipInputStream
      パラメータ:
      name - JAR/ZIPファイル・エントリの名前
      戻り値:
      作成されたJarEntryオブジェクト