- java.lang.Object
-
- java.io.Reader
-
- すべての実装されたインタフェース:
Closeable
,AutoCloseable
,Readable
- 直系の既知のサブクラス:
BufferedReader
,CharArrayReader
,FilterReader
,InputStreamReader
,PipedReader
,StringReader
,URLReader
public abstract class Reader extends Object implements Readable, Closeable
文字ストリームを読み込むための抽象クラスです。 サブクラスでの実装が必要なメソッドは、read(char[], int, int)とclose()だけです。 ただし、ほとんどのサブクラスは、効率性の向上または機能の追加、あるいはその両方のために、ここで定義されるメソッドの一部をオーバーライドします。- 導入されたバージョン:
- 1.1
- 関連項目:
BufferedReader
,LineNumberReader
,CharArrayReader
,InputStreamReader
,FileReader
,FilterReader
,PushbackReader
,PipedReader
,StringReader
,Writer
-
-
メソッドのサマリー
修飾子と型 メソッド 説明 abstract void
close()
ストリームを閉じて、それに関連するすべてのシステム・リソースを解放します。void
mark(int readAheadLimit)
ストリームの現在位置にマークを設定します。boolean
markSupported()
このストリームがmark()オペレーションをサポートするかどうかを判定します。static Reader
nullReader()
文字を読み取らない新しいReader
を返します。int
read()
単一の文字を読み込みます。int
read(char[] cbuf)
配列に文字を読み込みます。abstract int
read(char[] cbuf, int off, int len)
配列の一部に文字を読み込みます。int
read(CharBuffer target)
指定された文字バッファに文字列を読み込みます。boolean
ready()
このストリームが読込み可能かどうかを判定します。void
reset()
ストリームをリセットします。long
skip(long n)
文字をスキップします。long
transferTo(Writer out)
このリーダーからすべての文字を読み込み、指定されたライターに読み込まれた順番で書き込みます。
-
-
-
フィールドの詳細
-
lock
protected Object lock
このストリームに対する処理の同期に使用するオブジェクトです。 効率を良くするため、文字ストリーム・オブジェクトは、ほかのオブジェクトを使ってクリティカル・セクションを保護することができます。 そのため、サブクラスではthis
ではなくこのフィールドのオブジェクトを使用するか、同期化したメソッドを使用するようにしてください。
-
-
コンストラクタの詳細
-
Reader
protected Reader()
リーダー自体でクリティカル・セクションが同期する文字ストリーム・リーダーを新しく作成します。
-
Reader
protected Reader(Object lock)
指定されたオブジェクトでクリティカル・セクションが同期する文字ストリーム・リーダーを新しく作成します。- パラメータ:
lock
- 同期するオブジェクト。
-
-
メソッドの詳細
-
nullReader
public static Reader nullReader()
文字を読み取らない新しいReader
を返します。 返されるストリームは、最初はオープンしています。 ストリームを閉じるには、close()
メソッドを呼び出します。 後からclose()
をコールしても効果はありません。ストリームがオープンしている間、
read()
、read(char[])
、read(char[], int, int)
、read(Charbuffer)
、ready()
、skip(long)
、およびtransferTo()
の各メソッドは、ストリームの最後に達したかのようにすべて動作します。 ストリームが閉じられると、これらのメソッドはすべてIOException
をスローします。markSupported()
メソッドはfalse
を返します。mark()
メソッドとreset()
メソッドはIOException
をスローします。返された
Reader
に対する操作の同期に使用されるobject
は指定されていません。- 戻り値:
- 文字のない
Reader
- 導入されたバージョン:
- 11
-
read
public int read(CharBuffer target) throws IOException
指定された文字バッファに文字列を読み込みます。 バッファは、put操作の結果により変更される以外は、文字列そのままのリポジトリとして使用されます。 バッファのフリッピング(反転)やリワインド(巻き戻し)は行われません。- 定義:
read
、インタフェース:Readable
- パラメータ:
target
- 文字を読み込むバッファ- 戻り値:
- バッファに追加された文字の数。文字のソースが最後の位置にある場合は -1
- 例外:
IOException
- 入出力エラーが発生した場合NullPointerException
- targetがnullの場合ReadOnlyBufferException
- targetが読取り専用バッファの場合- 導入されたバージョン:
- 1.5
-
read
public int read() throws IOException
単一の文字を読み込みます。 このメソッドは1文字が読み込まれるか、入出力エラーが発生するか、あるいはストリームの終わりに達するまでブロックします。有効な単一文字の入力をサポートするためのサブクラスでは、このメソッドをオーバーライドします。
- 戻り値:
- 0 - 65535 (
0x00-0xffff
)の範囲の整数としての、読み込まれた文字。ストリームの終わりに達した場合は -1 - 例外:
IOException
- 入出力エラーが発生した場合
-
read
public int read(char[] cbuf) throws IOException
配列に文字を読み込みます。 このメソッドは入力の一部が有効になるか、入出力エラーが発生するか、あるいはストリームの終わりに達するまでブロックします。- パラメータ:
cbuf
- 転送先バッファ- 戻り値:
- 読み込まれた文字数。ストリームの終わりに達した場合は -1
- 例外:
IOException
- 入出力エラーが発生した場合
-
read
public abstract int read(char[] cbuf, int off, int len) throws IOException
配列の一部に文字を読み込みます。 このメソッドは入力の一部が有効になるか、入出力エラーが発生するか、あるいはストリームの終わりに達するまでブロックします。- パラメータ:
cbuf
- 転送先バッファoff
- 文字の格納開始オフセットlen
- 読み込む文字の最大数- 戻り値:
- 読み込まれた文字数。ストリームの終わりに達した場合は -1
- 例外:
IOException
- 入出力エラーが発生した場合IndexOutOfBoundsException
-off
が負の場合、またはlen
が負の場合、またはlen
がcbuf.length - off
より大きい場合
-
skip
public long skip(long n) throws IOException
文字をスキップします。 このメソッドは、文字が読み込まれるか、入出力エラーが発生するか、あるいはストリームの終わりに達するまでブロックします。- パラメータ:
n
- スキップする文字数- 戻り値:
- 実際にスキップした文字数
- 例外:
IllegalArgumentException
-n
が負の値の場合。IOException
- 入出力エラーが発生した場合
-
ready
public boolean ready() throws IOException
このストリームが読込み可能かどうかを判定します。- 戻り値:
- 次のread()が入力をブロックしないことが確実な場合はtrue、そうでない場合はfalse。 falseが返されても、次の読込みが確実にブロックするというわけでない。
- 例外:
IOException
- 入出力エラーが発生した場合
-
markSupported
public boolean markSupported()
このストリームがmark()オペレーションをサポートするかどうかを判定します。 デフォルト実装は常にfalseを返します。 サブクラスはこのメソッドをオーバーライドする必要があります。- 戻り値:
- このストリームがmarkオペレーションをサポートする場合に限りtrue。
-
mark
public void mark(int readAheadLimit) throws IOException
ストリームの現在位置にマークを設定します。 以降のreset()の呼出しでは、この位置へのストリームの再配置が試みられます。 すべての文字入力ストリームでmark()オペレーションがサポートされているわけではありません。- パラメータ:
readAheadLimit
- マークを保持しながら読み込むことができる文字数の上限。 この数の文字を読み込んだあとでストリームをリセットしようとすると失敗する場合がある。- 例外:
IOException
- ストリームがmark()をサポートしない場合、またはその他の入出力エラーが発生した場合
-
reset
public void reset() throws IOException
ストリームをリセットします。 ストリームにマークが設定されている場合は、マークに再配置しようとします。 マークが設定されていない場合は、開始位置への再配置など、個々のストリームに適した方法でリセットを試みます。 すべての文字入力ストリームでreset()オペレーションがサポートされているわけではありません。また、mark()をサポートせずにreset()をサポートするものもあります。- 例外:
IOException
- ストリームにマークが設定されなかった場合、またはマークの設定が無効になった場合、またはストリームがreset()をサポートしない場合、または他の入出力エラーが発生した場合
-
close
public abstract void close() throws IOException
ストリームを閉じて、それに関連するすべてのシステム・リソースを解放します。 ストリームが閉じられたあとにread()、ready()、mark()、reset()、またはskip()を呼び出すと、IOExceptionがスローされます。 すでに閉じられているストリームを閉じても、何の影響もありません。- 定義:
close
、インタフェース:AutoCloseable
- 定義:
close
、インタフェース:Closeable
- 例外:
IOException
- 入出力エラーが発生した場合
-
transferTo
public long transferTo(Writer out) throws IOException
このリーダーからすべての文字を読み込み、指定されたライターに読み込まれた順番で書き込みます。 戻ってくると、このリーダーはストリームの最後にあります。 このメソッドは、リーダーまたはライターのいずれも閉じません。このメソッドは、リーダーからの無期限読み取り、またはライターへの書き込みをブロックすることがあります。 リーダーおよび/またはライターが「非同期クローズ」であるか、転送中にスレッドが中断した場合の動作は、リーダー・ライター固有のものであり、したがって指定されていません。
I/Oエラーがリーダーからの読取りまたはライターへの書込みで発生した場合、一部の文字の読取りまたは書込み後にエラーが発生することがあります。 その結果、リーダーはストリームの終わりにいなくてもよく、一方または両方のストリームは不整合な状態にあってもよい。 I/Oエラーが発生した場合、両方のストリームを即時に閉じることを強くお勧めします。
- パラメータ:
out
- 作家、非null- 戻り値:
- 転送された文字数
- 例外:
IOException
- 読み取りまたは書込み中に入出力エラーが発生した場合。NullPointerException
-out
がnull
である場合- 導入されたバージョン:
- 10
-
-