java.io
クラス InputStream

java.lang.Object
  |
  +--java.io.InputStream
直接の既知のサブクラス:
ByteArrayInputStream, DataInputStream

public abstract class InputStream
extends Object

この抽象クラスは、バイト入力ストリームを表現するすべてのクラスのスーパークラスです。

InputStream のサブクラスを定義する必要のあるアプリケーションは、必ず入力の次のバイトを返すメソッドを提供しなければなりません。

導入されたバージョン:
JDK1.0
関連項目:
read(), OutputStream

コンストラクタの概要
InputStream()
           
 
メソッドの概要
 int available()
          この入力ストリームのメソッドの次の呼び出し側からブロックされることなく、この入力ストリームから読み込むことができる (またはスキップできる) バイト数を返します。
 void close()
          この入力ストリームを閉じて、そのストリームに関連するすべてのシステムリソースを解放します。
 void mark(int readlimit)
          入力ストリームの現在位置にマークを設定します。
 boolean markSupported()
          入力ストリームが markreset メソッドをサポートしているかどうかを判定します。
abstract  int read()
          入力ストリームから次のバイトデータを読み込みます。
 int read(byte[] b)
          入力ストリームからバイト数を読み込み、それをバッファ配列 b に格納します。
 int read(byte[] b, int off, int len)
          入力ストリームから len バイトまでのデータをバイト配列に読み込みます。
 void reset()
          このストリームの位置を、入力ストリームで最後に mark メソッドが呼び出されたときのマーク位置に再設定します。
 long skip(long n)
          入力ストリームからのデータを n バイトだけスキップしてその範囲のデータを破棄します。
 
クラス java.lang.Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

InputStream

public InputStream()
メソッドの詳細

read

public abstract int read()
                  throws IOException
入力ストリームから次のバイトデータを読み込みます。バイトの値は 0255 の範囲の値をとる int として返されます。ストリームの終わりに達して読み込むデータがない場合は -1 を返します。このメソッドは、入力データが読み込めるようになるか、ストリームの終わりが検出されるか、または例外がスローされるまでブロックします。

サブクラスは、このメソッドの実装を提供しなければなりません。

戻り値:
データの次のバイト。ストリームの終わりに達した場合は -1
例外:
IOException - 入出力エラーが発生した場合

read

public int read(byte[] b)
         throws IOException
入力ストリームからバイト数を読み込み、それをバッファ配列 b に格納します。実際に読み込まれたバイト数は整数として返されます。このメソッドは、入力データが読み込めるようになるか、ファイルの終わりが検出されるか、あるいは例外がスローされるまでブロックします。

bnull の場合は、NullPointerException がスローされます。b が 0 の場合、バイトは読み込まれず、0 が返されます。そうでない場合は、1 バイト以上読み込み処理を行います。ストリームがファイルの終わりに達しているために読み込むバイトがない場合は、値 -1 が返されます。そうでない場合は、1 バイト以上読み込まれ、b に格納されます。

最初に読み込まれたバイトは要素 b[0] に格納され、次のバイトは b[1] に格納されます。読み込まれるバイト数の上限は、b の長さと同じです。ここで、k を実際に読み込まれたバイト数とします。読み込まれたバイトは、要素 b[0]b[k-1] に格納され、要素 b[k]b[b.length-1] は影響を受けません。

ファイルの終わりに達している以外の理由で最初のバイトが読み込めない場合は、IOException がスローされます。特に、入力ストリームが閉じている場合には IOException がスローされます。

InputStream クラスの read(b) メソッドの効果は、以下と同じです。

 read(b, 0, b.length) 
パラメータ:
b - データの読み込み先のバッファ
戻り値:
バッファに読み込まれたバイトの合計数。ストリームの終わりに達してデータがない場合は -1
例外:
IOException - 入出力エラーが発生した場合
関連項目:
read(byte[], int, int)

read

public int read(byte[] b,
                int off,
                int len)
         throws IOException
入力ストリームから len バイトまでのデータをバイト配列に読み込みます。len までのバイトの読み込みが試行されますが、読み込まれるバイト数はもっと少ない場合もあり、0 の場合もあります。実際に読み込まれたバイト数は整数として返されます。

このメソッドは、入力データが読み込めるようになるか、ファイルの終わりが検出されるか、あるいは例外がスローされるまでブロックします。

bnull の場合は、NullPointerException がスローされます。

off が負の場合、len が負の場合、あるいは off+len が配列 b の長さより大きい場合は、IndexOutOfBoundsException がスローされます。

len が 0 の場合は、バイトが読み込まれず、0 が返されます。そうでない場合は、1 バイト以上の読み込み処理が行われます。ストリームがファイルの終わりに達しているために読み込むバイトがない場合は、値 -1 が返されます。そうでない場合は、1 バイト以上読み込まれ、b に格納されます。

最初に読み込まれたバイトは要素 b[off] に格納され、次のバイトは b[off+1] に格納されます。読み込まれるバイト数の上限は、len の長さと同じです。ここで、k を実際に読み込まれたバイト数とします。読み込まれたバイトは、要素 b[off]b[off+k-1] に格納され、要素 b[off+k]b[off+len-1] は影響を受けません。

すべての場合に、要素 b[0]b[off] および要素 b[off+len]b[b.length-1] は影響を受けません。

ファイルの終わりに達している以外の理由で最初のバイトが読み込めない場合は、IOException がスローされます。特に、入力ストリームが閉じている場合には IOException がスローされます。

InputStream クラスの read (b, off, len) メソッドは、単純に read() メソッドを繰り返し呼び出します。最初の呼び出しが IOException になる場合、その例外は呼び出し側から read (b, off, len) メソッドに返されます。read() の以降の呼び出しが IOException になった場合、その例外はファイルの終わりが検出された場合と同じようにキャッチおよび処理されます。つまり、その時点までに読み込まれたバイトは b に格納され、例外が発生するまでに読み込まれたバイト数が返されます。サブクラスでこのメソッドを実装する場合は、より効率的に実装してください。

パラメータ:
b - データの読み込み先のバッファ
off - データが書き込まれる配列 b の開始オフセット
len - 読み込む最大バイト数
戻り値:
バッファに読み込まれたバイトの合計数。ストリームの終わりに達してデータがない場合は -1
例外:
IOException - 入出力エラーが発生した場合
関連項目:
read()

skip

public long skip(long n)
          throws IOException
入力ストリームからのデータを n バイトだけスキップしてその範囲のデータを破棄します。さまざまな理由から、skip メソッドは、指定されたよりも少ないバイト数(0 の場合もある)しかスキップしないことがあります。これはさまざまな状況が原因として考えられます。たとえば、n バイトがスキップされる前にファイルの終わりに達してしまうことも、うまくスキップできない原因の 1 つです。実際にスキップしたバイト数が返されます。n が負の場合、バイトはスキップされません。

InputStreamskip メソッドはバイト配列を作成し、n バイトが読み込まれるか、ストリームの終わりに達するまで繰り返しその中に読み込みます。サブクラスでこのメソッドを実装する場合は、より効率的に実装してください。

パラメータ:
n - スキップするバイト数
戻り値:
実際にスキップされたバイト数
例外:
IOException - 入出力エラーが発生した場合

available

public int available()
              throws IOException
この入力ストリームのメソッドの次の呼び出し側からブロックされることなく、この入力ストリームから読み込むことができる (またはスキップできる) バイト数を返します。次の呼び出し側は、同じスレッドの場合も別のスレッドの場合もあります。

InputStream クラスの available メソッドは常に 0 を返します。

サブクラスはこのメソッドをオーバーライドする必要があります。

戻り値:
ブロックしないで入力ストリームから読み込むことができるバイト数
例外:
IOException - 入出力エラーが発生した場合

close

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

InputStreamclose メソッドは何も行いません。

例外:
IOException - 入出力エラーが発生した場合

mark

public void mark(int readlimit)
入力ストリームの現在位置にマークを設定します。これに続いて reset メソッドを呼び出すと、最後にマークが設定された位置にストリームを再設定するため、次回の読み込み操作では同じバイトから読み込むことになります。

引数 readlimit はこの入力ストリームに対して、マーク位置が無効になる前にこの引数が指定するバイト数を読み込むように指示します。

mark の汎用規約を次に示します。markSupported メソッドが true を返す場合、ストリームは mark の呼び出しのあとに読み込まれたすべてのバイトを記憶し、reset メソッドが呼び出されたときにそれらの同じバイトを再び供給するように準備します。ただし、reset が呼び出される前に readlimit より多くバイトがストリームから読み込まれている場合は、ストリームはデータを記憶する必要はありません。

InputStreammark メソッドは何も行いません。

パラメータ:
readlimit - マーク位置が無効になる前に読み込み可能なバイトの最大リミット
関連項目:
reset()

reset

public void reset()
           throws IOException
このストリームの位置を、入力ストリームで最後に mark メソッドが呼び出されたときのマーク位置に再設定します。

reset メソッドの一般的な規約を次に示します。

InputStream クラスの reset メソッドは何も行わず、常に IOException をスローします。

例外:
IOException - ストリームにマークが設定されていなかった場合、またはマークが無効になっていた場合
関連項目:
mark(int), IOException

markSupported

public boolean markSupported()
入力ストリームが markreset メソッドをサポートしているかどうかを判定します。InputStreammarkSupported メソッドは false を返します。
戻り値:
ストリームが mark と reset メソッドをサポートするタイプであれば true、そうでない場合は false
関連項目:
mark(int), reset()