public class FilterInputStream extends InputStream
FilterInputStream
は、データの基本的なソースとして使用するためのその他の入力ストリームを格納します。データを途中で変換することや、追加機能を提供することもあります。FilterInputStream
クラスそのものが、格納されている入力ストリームにすべての要求を渡すバージョンによって、InputStream
のすべてのメソッドを単純にオーバーライドします。FilterInputStream
のサブクラスは、これらのメソッドの一部をさらにオーバーライドすることができ、追加のメソッドやフィールドを提供することもできます。修飾子と型 | フィールドと説明 |
---|---|
protected InputStream |
in
フィルタ処理される入力ストリームです。
|
修飾子 | コンストラクタと説明 |
---|---|
protected |
FilterInputStream(InputStream in)
あとで使用できるように引数
in をフィールドthis.in に割り当てることによってFilterInputStream を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
int |
available()
この入力ストリームのメソッドの次の呼出し側によって、ブロックせずにこの入力ストリームから読み込むことができる(またはスキップできる)推定バイト数を返します。
|
void |
close()
この入力ストリームを閉じて、そのストリームに関連するすべてのシステム・リソースを解放します。
|
void |
mark(int readlimit)
この入力ストリームの現在位置にマークを設定します。
|
boolean |
markSupported()
この入力ストリームが
mark およびreset メソッドをサポートしているかどうかを判定します。 |
int |
read()
この入力ストリームからデータの次のバイトを読み込みます。
|
int |
read(byte[] b)
最大
byte.length バイトのデータを、この入力ストリームからバイト配列に読み込みます。 |
int |
read(byte[] b, int off, int len)
最大
len バイトのデータを、この入力ストリームからバイト配列に読み込みます。 |
void |
reset()
このストリームを、この入力ストリームで最後に
mark メソッドが呼び出されたときの位置に再配置します。 |
long |
skip(long n)
入力ストリームから
n バイトのデータをスキップして破棄します。 |
protected volatile InputStream in
protected FilterInputStream(InputStream in)
in
をフィールドthis.in
に割り当てることによってFilterInputStream
を作成します。in
- ベースとなる入力ストリーム。このインスタンスがベースとなるストリームなしで生成される場合はnull
。public int read() throws IOException
0
- 255
の範囲のint
として返されます。ストリームの終わりに達したために読み込むバイトがない場合は、-1
が返されます。入力データが読み込めるようになるか、ストリームの終わりが検出されるか、または例外が発生するまで、このメソッドはブロックされます。
このメソッドは単純にin.read()
を実行し、その結果を返します。
read
、クラス: InputStream
-1
。IOException
- 入出力エラーが発生した場合。in
public int read(byte[] b) throws IOException
byte.length
バイトのデータを、この入力ストリームからバイト配列に読み込みます。このメソッドは、入力の一部が利用できるようになるまでブロックします。
このメソッドは単純にread(b, 0, b.length)
の呼出しを実行し、その結果を返します。代わりにin.read(b)
が実行されないようにしてください。FilterInputStream
の特定のサブクラスは、実際に使用されている実装方法に依存します。
read
、クラス: InputStream
b
- データの読込み先のバッファ。-1
。IOException
- 入出力エラーが発生した場合。read(byte[], int, int)
public int read(byte[] b, int off, int len) throws IOException
len
バイトのデータを、この入力ストリームからバイト配列に読み込みます。len
が0でない場合、このメソッドは入力の一部が利用できるようになるまでブロックされます。それ以外の場合、バイトは読み込まれず、0
が返されます。
このメソッドは単純にin.read(b, off, len)
を実行し、その結果を返します。
read
、クラス: InputStream
b
- データの読込み先のバッファ。off
- 転送先配列b
の開始オフセットlen
- 読み込まれる最大バイト数。-1
。NullPointerException
- b
がnull
である場合。IndexOutOfBoundsException
- off
が負の値の場合、len
が負の値の場合、あるいはlen
がb.length - off
より大きい場合IOException
- 入出力エラーが発生した場合。in
public long skip(long n) throws IOException
n
バイトのデータをスキップして破棄します。さまざまな理由から、skip
メソッドは指定よりも少ないバイト数しかスキップしないことがあります。0
の場合もあります。スキップされた実際のバイト数が返されます。
このメソッドは単純にin.skip(n)
を実行します。
skip
、クラス: InputStream
n
- スキップされるバイト数。IOException
- ストリームがシークをサポートしない場合、またはその他の入出力エラーが発生した場合。public int available() throws IOException
このメソッドは、in
.available()の結果を返します。
available
、クラス: InputStream
IOException
- 入出力エラーが発生した場合。public void close() throws IOException
in.close()
を実行します。close
、インタフェース: Closeable
close
、インタフェース: AutoCloseable
close
、クラス: InputStream
IOException
- 入出力エラーが発生した場合。in
public void mark(int readlimit)
reset
メソッドを呼び出すと、最後にマークされた位置にこのストリームが再配置されるため、以降の読込みでは同じバイトが再度読み込まれます。
引数readlimit
はこの入力ストリームに対して、マーク位置が無効になる前にこの引数が指定するバイト数を読み込むように指示します。
このメソッドは単純にin.mark(readlimit)
を実行します。
mark
、クラス: InputStream
readlimit
- マーク位置が無効になる前に読込み可能なバイト数の上限。in
, reset()
public void reset() throws IOException
mark
メソッドが呼び出されたときの位置に再配置します。
このメソッドは単純にin.reset()
を実行します。
ストリームのマークは、ストリームに何が含まれているかをチェックするために、データを少しだけ先読みする必要がある場合に使われます。これをもっとも容易に実行する方法は、一般的なパーサーを呼び出すことです。ストリームがパーサーで取り扱えるタイプであれば、これでうまく行きます。ストリームがこのようなタイプではない場合は、パーサーは失敗した時点で例外を発生させます。readlimitバイトの範囲内でこれが発生した場合は、外部のコードでストリームをリセットし、別のパーサーを呼び出すことができます。
reset
、クラス: InputStream
IOException
- ストリームにマークが設定されていなかった場合、またはマークが無効になっていた場合。in
, mark(int)
public boolean markSupported()
mark
およびreset
メソッドをサポートしているかどうかを判定します。このメソッドは単純にin.markSupported()
を実行します。markSupported
、クラス: InputStream
mark
およびreset
メソッドをサポートしている場合はtrue
、それ以外の場合はfalse
。in
, InputStream.mark(int)
, InputStream.reset()
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2017, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。