public abstract class InputStream extends Object implements Closeable
InputStreamのサブクラスを定義する必要のあるアプリケーションは、必ず入力の次のバイトを返すメソッドを提供しなければなりません。
BufferedInputStream, ByteArrayInputStream, DataInputStream, FilterInputStream, read(), OutputStream, PushbackInputStream| コンストラクタと説明 |
|---|
InputStream() |
| 修飾子と型 | メソッドと説明 |
|---|---|
int |
available()
この入力ストリームのメソッドの次の呼出しによって、ブロックせずにこの入力ストリームから読み込むことができる(またはスキップできる)推定バイト数を返します。
|
void |
close()
この入力ストリームを閉じて、そのストリームに関連するすべてのシステム・リソースを解放します。
|
void |
mark(int readlimit)
この入力ストリームの現在位置にマークを設定します。
|
boolean |
markSupported()
この入力ストリームが
markおよびresetメソッドをサポートしているかどうかを判定します。 |
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バイトのデータをスキップして破棄します。 |
public abstract int read()
throws IOException
0 - 255の範囲のintとして返されます。ストリームの終わりに達したために読み込むバイトがない場合は、-1が返されます。入力データが読み込めるようになるか、ストリームの終わりが検出されるか、または例外が発生するまで、このメソッドはブロックされます。
サブクラスは、このメソッドの実装を提供しなければなりません。
-1。IOException - 入出力エラーが発生した場合。public int read(byte[] b)
throws IOException
bに格納します。実際に読み込まれたバイト数は整数として返されます。このメソッドは、入力データが読み込めるようになるか、ファイルの終わりが検出されるか、あるいは例外がスローされるまでブロックします。
bの長さがゼロの場合、バイトは読み込まれず、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 - bがnullである場合。read(byte[], int, int)public int read(byte[] b,
int off,
int len)
throws IOException
lenバイトのデータを、入力ストリームからバイト配列に読み込みます。lenバイトまでの読込みが試行されますが、読み込まれるバイト数はもっと少ない場合もあります。実際に読み込まれたバイト数は整数として返されます。
このメソッドは、入力データが読み込めるようになるか、ファイルの終わりが検出されるか、あるいは例外がスローされるまでブロックします。
lenがゼロの場合、バイトは読み込まれず、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 - bがnullである場合。IndexOutOfBoundsException - offが負の値の場合、lenが負の値の場合、あるいはlenがb.length - offより大きい場合read()public long skip(long n)
throws IOException
nバイトのデータをスキップして破棄します。さまざまな理由から、skipメソッドは指定よりも少ないバイト数しかスキップしないことがあります。0の場合もあります。このスキップは複数の条件に起因する可能性がありますが、考えられる唯一の場合は、nバイトがスキップされる前にファイルの終わりに達した場合です。スキップされた実際のバイト数が返されます。nが負の場合、InputStreamクラスのskipメソッドは常に0を返し、バイトはスキップされません。サブクラスは負の値を異なる方法で処理できます。
このクラスのskipメソッドはバイト配列を作成し、nバイトが読み込まれるまで、またはストリームの終わりに達するまで繰り返しその中に読み込みます。サブクラスでこのメソッドを実装する場合は、より効率的に実装してください。たとえば、実装はシークの機能に依存する可能性があります。
n - スキップされるバイト数。IOException - ストリームがシークをサポートしない場合、またはその他の入出力エラーが発生した場合。public int available()
throws IOException
InputStreamの実装には、ストリームの合計バイト数を返すものもありますが、多くの実装は返さないことに注意してください。このストリームのデータをすべて保持するためのバッファを割り当てるのに、このメソッドの戻り値を使用することは、適切ではありません。
このメソッドのサブクラスの実装は、この入力ストリームがclose()メソッドを呼出すことで閉じられた場合に、IOExceptionをスローすることを選択できます。
InputStreamクラスのavailableメソッドは常に0を返します。
サブクラスはこのメソッドをオーバーライドする必要があります。
0。IOException - 入出力エラーが発生した場合。public void close()
throws IOException
InputStreamのcloseメソッドは何も行いません。
close、インタフェース: Closeableclose、インタフェース: AutoCloseableIOException - 入出力エラーが発生した場合。public void mark(int readlimit)
resetメソッドを呼び出すと、最後にマークされた位置にこのストリームが再配置されるため、以降の読込みでは同じバイトが再度読み込まれます。
引数readlimitはこの入力ストリームに対して、マーク位置が無効になる前にこの引数が指定するバイト数を読み込むように指示します。
markの汎用規約を次に示します。markSupportedメソッドがtrueを返す場合、ストリームはmarkの呼出しのあとに読み込まれたすべてのバイトを記憶し、resetメソッドが呼び出されたときにそれらの同じバイトを再び供給するように準備します。ただし、resetが呼び出される前にreadlimitより多くバイトがストリームから読み込まれている場合は、ストリームはデータを記憶する必要はありません。
閉じられたストリームにマークを設定するときに、ストリームに影響を与えてはいけません。
InputStreamのmarkメソッドは何も行いません。
readlimit - マーク位置が無効になる前に読込み可能なバイト数の上限。reset()public void reset()
throws IOException
markメソッドが呼び出されたときの位置に再配置します。
resetの一般的な規則は次のとおりです。
markSupportedメソッドがtrueを返す場合
markメソッドが呼び出されていない場合、あるいはmarkが最後に呼び出されてから、ストリームから読み込まれたバイト数が最後の呼出しのmarkの引数より多い場合は、IOExceptionがスローされることがある。
IOExceptionがスローされない場合、markが最後に呼び出されてから(markが呼び出されていない場合はファイルの先頭から)読み込まれたすべてのバイトがreadメソッドの以降の呼出し側に再び供給されるような状態にストリームがリセットされる。resetの呼出しの時点で次の入力データになっていたはずのバイトが続く。 markSupportedメソッドがfalseを返す場合
resetの呼出しはIOExceptionをスローする場合がある。
IOExceptionがスローされない場合、ストリームは、入力ストリームの特定のタイプおよびその作成方法に依存する固定状態にリセットされる。readメソッドの以降の呼出し側に供給されるバイトは、入力ストリームの特定のタイプに依存する。 InputStreamクラスのresetメソッドはIOExceptionをスローする以外何も行いません。
IOException - ストリームにマークが設定されていなかった場合、またはマークが無効になっていた場合。mark(int)、IOException バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.