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
、インタフェース: 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, 2014, Oracle and/or its affiliates. All rights reserved.