nanoJBlend

java.io
クラス FilterInputStream

java.lang.Object
  上位を拡張 java.io.InputStream
      上位を拡張 java.io.FilterInputStream
直系の既知のサブクラス:
BufferedInputStream, DataInputStream

public class FilterInputStream
extends InputStream

FilterInputStream は別の入力ストリームをデータソースとして内部に保持して、そのストリームから読み出したデータを変換したりなにか別の機能を追加したりするためのクラスです。

FilterInputStream クラスの実装は単に InputStream のすべてのメソッドをオーバーライドして、メソッドに要求されるすべての処理を保持している入力ストリームに要求するだけです。 FilterInputStream のサブクラスでこれらのメソッドをさらにオーバーライドする、または別のメソッドやフィールドを追加します。


メソッドの概要
 int available()
          このストリームからブロックすることなく読み込めるバイト数を返します。
 void close()
          この入力ストリームをクローズして、ストリームに関連するシステムリソースを解放します。
 void mark(int readlimit)
          この入力ストリーム中の現在のアクセス位置をマークします。
 boolean markSupported()
          この入力ストリームが mark メソッドと reset メソッドをサポートしているかどうかを返します。
 int read()
          入力ストリームから次のバイトを読み込みます。
 int read(byte[] b)
          この入力ストリームから最大 b.length バイトまで読み込み、バイト配列 b に格納します。
 int read(byte[] b, int off, int len)
          このストリームから、最大 len バイトまでのバイトデータをバイト配列 b に読み込みます。
 void reset()
          ストリームの読み出しポジションを mark メソッドが最後に呼び出された時点の位置に戻します。
 long skip(long n)
          この入力ストリームから n バイト分をスキップして廃棄します。
 
クラス java.lang.Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait
 

メソッドの詳細

available

public int available()
              throws IOException
このストリームからブロックすることなく読み込めるバイト数を返します。

このメソッドは単に内部の入力ストリームの available() を呼び出して、その結果を返します。

オーバーライド:
クラス InputStream 内の available
戻り値:
入力ストリームからブロックすることなく読み込めるバイト数
例外:
IOException - I/Oエラーが発生した場合

close

public void close()
           throws IOException
この入力ストリームをクローズして、ストリームに関連するシステムリソースを解放します。

このメソッドは単に内部の入力ストリームの close() を実行します。

オーバーライド:
クラス InputStream 内の close
例外:
IOException - I/Oエラーが発生した場合

mark

public void mark(int readlimit)
この入力ストリーム中の現在のアクセス位置をマークします。 以降 reset メソッドを呼び出すことによって、このストリームのアクセス位置を最後にマークされた位置にリセットしたのち、同じバイトを再読み込みできます。

引数 readlimit には、マークされたアクセス位置が無効になるまで、最低限読み出し可能にする必要のあるバイト数を指定します。

このメソッドは単に内部の入力ストリームの mark(readlimit) を実行します。

次のコードは mark メソッドを使った再読み込みの例です。

  FilterInputStream fis = (FilterInputStream)is;
  byte[] arrayA, arrayB;
      ...
  arrayA = new byte[10];
  arrayB = new byte[3];

  //assume the stream content from the current position is "0123456789abc"
  fis.mark(3);      //mark the current position first
  fis.read(arrayA); //read 10 bytes ("0123456789") to arrayA
                    //if no fis.reset() is called then fis.read(arrayB, 0, 3)
                    //will store "abc" to arrayB
  fis.reset();      //call reset() before re-read action (only 3 bytes is guaranteed valid in theory)
  fis.read(arrayB); //read 3 guaranteed valid byte to arrayB
      ...
  

オーバーライド:
クラス InputStream 内の mark
パラメータ:
readlimit - マークされたアクセス位置が無効になるまで読み出し可能とする最大データバイト数

markSupported

public boolean markSupported()
この入力ストリームが mark メソッドと reset メソッドをサポートしているかどうかを返します。

このメソッドは単に内部の入力ストリームの markSupported() を呼び出して、その結果を返します。

オーバーライド:
クラス InputStream 内の markSupported
戻り値:
このストリームが mark メソッドと reset メソッドをサポートしている場合は true 、サポートしていない場合は false

read

public int read()
         throws IOException
入力ストリームから次のバイトを読み込みます。 バイトは int で返され、0から255までの値を持ちます。もしストリームの終端に達しているためにバイトデータが読み込めない場合は -1 を返します。このメソッドは入力データが得られるか、ストリームの終端を検出するか、または例外が発生するまでブロックします。

このメソッドは単に内部の入力ストリームの read() を呼び出して、その結果を返します。

定義:
クラス InputStream 内の read
戻り値:
次のバイトデータ、またはストリームの終端に到達した場合は -1
例外:
IOException - I/Oエラーが発生した場合

read

public int read(byte[] b)
         throws IOException
この入力ストリームから最大 b.length バイトまで読み込み、バイト配列 b に格納します。このメソッドは何バイトか得られるまでブロックします。

このメソッドは単に read(b, 0, b.length) を呼び出して、その結果を返します。内部の入力ストリームの read(b) を呼び出すのではないことは重要です。 FilterInputStream のサブクラスは、この実装方法に依存します。

オーバーライド:
クラス InputStream 内の read
パラメータ:
b - 読み込んだデータを格納するバッファ
戻り値:
バッファに読み込まれた総バイト数、ストリームの終端に到達したためにデータがない場合は -1
例外:
IOException - I/Oエラーが発生した場合
関連項目:
InputStream.read(byte[])

read

public int read(byte[] b,
                int off,
                int len)
         throws IOException
このストリームから、最大 len バイトまでのバイトデータをバイト配列 b に読み込みます。何バイトかのデータが得られるまで、このメソッドはブロックします。

このメソッドは単に内部の入力ストリームの read(b, off, len) を呼び出して、その結果を返します。

オーバーライド:
クラス InputStream 内の read
パラメータ:
b - 読み込んだデータを格納するバッファ
off - データを書き込み始める、配列 b のオフセット位置
len - 読み込むバイトデータの最大長
戻り値:
バッファに格納されたデータの総バイト長。 ストリームの終端に到達したためにデータがない場合は -1
例外:
IOException - I/Oエラーが発生した場合
関連項目:
InputStream.read(byte[], int, int)

reset

public void reset()
           throws IOException
ストリームの読み出しポジションを mark メソッドが最後に呼び出された時点の位置に戻します。

このメソッドは単に内部の入力ストリームの reset() を実行します。

ストリームマーカーは、何かの処理の前にストリームの中身を少し読み込む必要のある場合を想定した機能です。一般的に、この機能はパーサーによるデータ処理で頻繁に使われます。パーサーはストリームのデータをいくらか読み込み、もしそのパーサーが扱うべき形式のデータであると判断したら、そのストリームを一気に処理します。もしそうでない場合は、パーサーは例外をスローします。もし例外の送出が readlimit バイトの中で起きるなら、パーサーを使う外側のコードはストリームをリセットして別のパーサーによるデータ処理を試みます。

オーバーライド:
クラス InputStream 内の reset
例外:
IOException - ストリームがマークされていない場合、またはマークが無効になっている場合

skip

public long skip(long n)
          throws IOException
この入力ストリームから n バイト分をスキップして廃棄します。 skip メソッドは、指定したより少ないバイト数(場合によっては0バイト)しかスキップしない場合があり得ます。実際にスキップされたバイト数が返されます。

このメソッドは単に内部の入力ストリームの skip(n) を呼び出して、その結果を返します。

オーバーライド:
クラス InputStream 内の skip
パラメータ:
n - スキップするバイト数
戻り値:
実際にスキップしたバイト数
例外:
IOException - I/Oエラーが発生した場合
関連項目:
InputStream.skip(long)

nanoJBlend

Copyright 2005-2013 Aplix and/or its affiliates. All rights reserved. Aplix Confidential and Restricted.
NTT DOCOMO and Hitachi Kokusai Electric Confidential