JavaTM Platform
Standard Ed. 6

java.io
クラス InputStream

java.lang.Object
  上位を拡張 java.io.InputStream
すべての実装されたインタフェース:
Closeable
直系の既知のサブクラス:
AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream

public abstract class InputStream
extends Object
implements Closeable

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

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

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

コンストラクタの概要
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 から継承されたメソッド
clone, equals, finalize, 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 に格納します。実際に読み込まれたバイト数は整数として返されます。このメソッドは、入力データが読み込めるようになるか、ファイルの終わりが検出されるか、あるいは例外がスローされるまでブロックします。  

b の長さが 0 の場合は、バイトは読み込まれず、0 が返されます。そうでない場合は、少なくとも 1 バイトを読み込もうとします。ストリームがファイルの終わりに達したために読み込むバイトがない場合は値 -1 が返されます。そうでない場合は、少なくとも 1 バイトが読み込まれ、b に格納されます。  

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

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

 read(b, 0, b.length) 

パラメータ:
b - データの読み込み先のバッファ
戻り値:
バッファに読み込まれたバイトの合計数。ストリームの終わりに達してデータがない場合は -1
例外:
IOException - ファイルの終わりに達していること以外の理由で最初のバイトを読み込めない場合、入力ストリームが閉じられた場合、またはその他の入出力エラーが発生した場合
NullPointerException - bnull の場合
関連項目:
read(byte[], int, int)

read

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

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

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] は影響を受けません。  

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

パラメータ:
b - データの読み込み先のバッファ
off - データが書き込まれる配列 b の開始オフセット
len - 読み込む最大バイト数
戻り値:
バッファに読み込まれたバイトの合計数。ストリームの終わりに達してデータがない場合は -1
例外:
IOException - ファイルの終わりに達していること以外の理由で最初のバイトを読み込めない場合、入力ストリームが閉じられた場合、またはその他の入出力エラーが発生した場合
NullPointerException - bnull の場合
IndexOutOfBoundsException - off が負の場合、len が負の場合、または lenb.length - off よりも大きい場合
関連項目:
read()

skip

public long skip(long n)
          throws IOException
この入力ストリームから n バイト分をスキップおよび破棄します。さまざまな理由から、skip メソッドは指定よりも少ないバイト数しかスキップしないことがあります。0 の場合もあります。このスキップは複数の条件に起因する可能性がありますが、考えられる唯一の場合は、n バイトがスキップされる前にファイルの終わりに達した場合です。スキップされた実際のバイト数が返されます。n が負の場合、バイトはスキップされません。  

このクラスの skip メソッドはバイト配列を作成し、n バイトが読み込まれるまで、またはストリームの終わりに達するまで繰り返しその中に読み込みます。サブクラスでこのメソッドを実装する場合は、より効率的に実装してください。たとえば、実装はシークの機能に依存する可能性があります。

パラメータ:
n - スキップするバイト数
戻り値:
実際にスキップされたバイト数
例外:
IOException - ストリームがシークをサポートしない場合、またはその他の入出力エラーが発生した場合

available

public int available()
              throws IOException
この入力ストリームのメソッドの次の呼び出しによって、ブロックせずにこの入力ストリームから読み込むことができる (またはスキップできる) 推定バイト数を返します。次の呼び出しは、同じスレッドの場合も別のスレッドの場合もあります。このような多数のバイトを 1 回で読み込んだりスキップしたりすることでブロックすることはありませんが、読み込むまたはスキップするバイト数が少なくなることがあります。  

InputStream の実装には、ストリームの合計バイト数を返すものもありますが、多くの実装は返さないことに注意してください。このストリームのデータをすべて保持するためのバッファーを割り当てるのに、このメソッドの戻り値を使用することは、適切ではありません。  

close() メソッドの呼び出しによってこの入力ストリームが閉じられた場合、このメソッドのサブクラスの実装は IOException をスローすることがあります。  

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

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

戻り値:
ブロックせずにこの入力ストリームから読み込むことができる (またはスキップできる) 推定バイト数、または入力ストリームの終わりに達した場合は 0
例外:
IOException - 入出力エラーが発生した場合

close

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

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

定義:
インタフェース Closeable 内の close
例外:
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 メソッドをサポートしているかどうかを判定します。mark および reset がサポートされているかどうかは、入力ストリームインスタンスごとに異なります。InputStreammarkSupported メソッドは false を返します。

戻り値:
このストリームインスタンスが mark および reset メソッドをサポートしている場合は true、サポートしていない場合は false
関連項目:
mark(int), reset()

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。