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
が負の場合、バイトはスキップされません。
このクラスの 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
、インタフェース: Closeable
close
、インタフェース: AutoCloseable
IOException
- 入出力エラーが発生した場合。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, 2013, Oracle and/or its affiliates. All rights reserved.