クラスDigestInputStream

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

public class DigestInputStream extends FilterInputStream
ストリームを通過するビットを使用して、関連したメッセージ・ダイジェストを更新する透明なストリームです。

メッセージ・ダイジェストの計算を完了するには、このダイジェスト入力ストリームのreadメソッドの1つを呼び出したあと、関連したメッセージ・ダイジェストに対してdigestメソッドの1つを呼び出します。

このストリームをオンまたはオフにすることができます(onを参照)。 オンの場合、readメソッドの1つに対する呼出しは、メッセージ・ダイジェストを更新します。 ただし、オフの場合にはメッセージ・ダイジェストは更新されません。 ストリームに対するデフォルトはオンです。

ダイジェスト・オブジェクトは1つのダイジェスト (MessageDigestを参照してください)しかコンピュートできないので、中間ダイジェストをコンピュートするために、呼び出し元はダイジェスト・オブジェクトにハンドルを保持し、コンピュートされるダイジェストごとにそれをクローンし、元のダイジェストはそのままにします。

実装上のノート:
この実装では、「オン」の場合に入力ストリームから実際に読み取られたデータのみでメッセージ・ダイジェストを更新します。 これには、様々なreadメソッドtransferToreadAllBytesおよびreadNBytesが含まれます。 skipメソッドでバイパスされたデータは無視されます。 一方、基礎となるストリームがmarkおよびresetメソッドをサポートし、同じデータがresetの後に再度読み取られると、メッセージ・ダイジェストが再度更新されます。
導入されたバージョン:
1.2
関連項目:
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    protected MessageDigest
    このストリームに関連したメッセージ・ダイジェストです。

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

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

    コンストラクタ
    コンストラクタ
    説明
    指定された入力ストリームとメッセージ・ダイジェストを使用して、ダイジェストを入力するストリームを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    このストリームに関連したメッセージ・ダイジェストを返します。
    void
    on(boolean on)
    ダイジェスト機能をオンまたはオフにします。
    int
    1バイトを読み込み、メッセージ・ダイジェストを更新します(ダイジェスト機能がオンである場合)。
    int
    read(byte[] b, int off, int len)
    バイト配列に読み込み、メッセージ・ダイジェストを更新します(ダイジェスト機能がオンである場合)。
    void
    指定されたメッセージ・ダイジェストをこのストリームに関連付けます。
    このダイジェスト入力ストリームとそれに関連したメッセージ・ダイジェスト・オブジェクトの文字列表現を出力します。

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

    available, close, mark, markSupported, read, reset, skip
    修飾子と型
    メソッド
    説明
    int
    この入力ストリームのメソッドの次の呼出し側によって、ブロックせずにこの入力ストリームから読み込むことができる(またはスキップできる)推定バイト数を返します。
    void
    この入力ストリームを閉じて、そのストリームに関連するすべてのシステム・リソースを解放します。
    void
    mark(int readlimit)
    この入力ストリームの現在位置にマークを設定します。
    boolean
    この入力ストリームがmarkおよびresetメソッドをサポートしているかどうかを判定します。
    int
    read(byte[] b)
    最大b.lengthバイトのデータを、この入力ストリームからバイト配列に読み込みます。
    void
    このストリームを、この入力ストリームで最後にmarkメソッドが呼び出されたときの位置に再配置します。
    long
    skip(long n)
    入力ストリームからnバイトのデータをスキップして破棄します。

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

    nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
    修飾子と型
    メソッド
    説明
    バイトを読み取らない新しいInputStreamを返します。
    byte[]
    入力ストリームから残りのすべてのバイトを読み取ります。
    int
    readNBytes(byte[] b, int off, int len)
    入力ストリームからリクエストされたバイト数を、指定されたバイト配列に読み取ります。
    byte[]
    readNBytes(int len)
    入力ストリームから指定のバイト数まで読み取ります。
    void
    skipNBytes(long n)
    この入力ストリームからのデータのnバイトに正確にスキップし、破棄します。
    long
    この入力ストリームからすべてのバイトを読み取り、指定された出力ストリームに読み込まれた順序でバイトを書き込みます。

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

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, 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であるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • フィールド詳細

    • digest

      protected MessageDigest digest
      このストリームに関連したメッセージ・ダイジェストです。
  • コンストラクタの詳細

    • DigestInputStream

      public DigestInputStream(InputStream stream, MessageDigest digest)
      指定された入力ストリームとメッセージ・ダイジェストを使用して、ダイジェストを入力するストリームを作成します。
      パラメータ:
      stream - 入力ストリーム。
      digest - このストリームに関連させるメッセージ・ダイジェスト。
  • メソッドの詳細

    • getMessageDigest

      public MessageDigest getMessageDigest()
      このストリームに関連したメッセージ・ダイジェストを返します。
      戻り値:
      このストリームに関連したメッセージ・ダイジェスト。
      関連項目:
    • setMessageDigest

      public void setMessageDigest(MessageDigest digest)
      指定されたメッセージ・ダイジェストをこのストリームに関連付けます。
      パラメータ:
      digest - このストリームに関連したメッセージ・ダイジェスト。
      関連項目:
    • read

      public int read() throws IOException
      1バイトを読み込み、メッセージ・ダイジェストを更新します(ダイジェスト機能がオンである場合)。 すなわち、このメソッドは入力ストリームから1バイトを読み込み、実際にそのバイトの読込みが終了するまで次のデータの読込みを停止します。 ダイジェスト機能がオン(onを参照)の場合には、このメソッドは、そのストリームに関連したメッセージ・ダイジェストに対してupdateを呼び出し、読み込まれたバイトを渡します。
      オーバーライド:
      read、クラスFilterInputStream
      戻り値:
      読み込まれるバイト。
      スロー:
      IOException - 入出力エラーが発生した場合。
      関連項目:
    • read

      public int read(byte[] b, int off, int len) throws IOException
      バイト配列に読み込み、メッセージ・ダイジェストを更新します(ダイジェスト機能がオンである場合)。 すなわち、このメソッドは、入力ストリームから配列bの中に、オフセットoffから開始してlenバイトまで読み込みます。 このメソッドは、データが実際に読み込まれるまで、次に読み込むのを停止します。 ダイジェスト機能がオン(onを参照)の場合には、このメソッドは、そのストリームに関連したメッセージ・ダイジェストに対してupdateを呼び出し、読み込んだデータを渡します。
      オーバーライド:
      read、クラスFilterInputStream
      パラメータ:
      b - データを中に読み込む配列。
      off - bの中にデータを配置する、配列の開始オフセット。
      len - オフセットoffから開始して、入力ストリームからbの中に読み込むバイトの最大数。
      戻り値:
      実際に読み込んだバイト数。 lenバイトを読み込む前にストリームの最後に到達した場合には、読み込んだバイト数はlenより小さくなる。この呼出しを行った時点ですでにストリームの最後に到達しているため、1バイトも読み込まれなかった場合には -1が返される。
      スロー:
      IOException - 入出力エラーが発生した場合。
      関連項目:
    • on

      public void on(boolean on)
      ダイジェスト機能をオンまたはオフにします。 デフォルトはオンです。 オンの場合、readメソッドの1つに対する呼出しは、メッセージ・ダイジェストを更新します。 ただし、オフの場合にはメッセージ・ダイジェストは更新されません。
      パラメータ:
      on - ダイジェスト関数をオンにするにはtrue、オフにするにはfalse
    • toString

      public String toString()
      このダイジェスト入力ストリームとそれに関連したメッセージ・ダイジェスト・オブジェクトの文字列表現を出力します。
      オーバーライド:
      toString、クラスObject
      戻り値:
      このオブジェクトの文字列表現