モジュール java.base
パッケージ java.io

クラスReader

java.lang.Object
java.io.Reader
すべての実装されたインタフェース:
Closeable, AutoCloseable, Readable
直系の既知のサブクラス:
BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader

public abstract class Reader extends Object implements Readable, Closeable
文字ストリームを読み込むための抽象クラスです。 サブクラスでの実装が必要なメソッドは、read(char[], int, int)とclose()だけです。 ただし、ほとんどのサブクラスは、効率性の向上または機能の追加、あるいはその両方のために、ここで定義されるメソッドの一部をオーバーライドします。
導入されたバージョン:
1.1
関連項目:
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    protected Object
    このストリームに対する処理の同期に使用するオブジェクトです。
  • コンストラクタのサマリー

    コンストラクタ
    修飾子
    コンストラクタ
    説明
    protected
    リーダー自体でクリティカル・セクションが同期する文字ストリーム・リーダーを新しく作成します。
    protected
    Reader(Object lock)
    指定されたオブジェクトでクリティカル・セクションが同期する文字ストリーム・リーダーを新しく作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    abstract void
    ストリームを閉じて、それに関連するすべてのシステム・リソースを解放します。
    void
    mark(int readAheadLimit)
    ストリームの現在位置にマークを設定します。
    boolean
    このストリームがmark()オペレーションをサポートするかどうかを判定します。
    static Reader
    文字を読み取らない新しいReaderを返します。
    int
    単一の文字を読み込みます。
    int
    read(char[] cbuf)
    配列に文字を読み込みます。
    abstract int
    read(char[] cbuf, int off, int len)
    配列の一部に文字を読み込みます。
    int
    read(CharBuffer target)
    指定された文字バッファに文字列を読み込みます。
    boolean
    このストリームが読込み可能かどうかを判定します。
    void
    ストリームをリセットします。
    long
    skip(long n)
    文字をスキップします。
    long
    このリーダーからすべての文字を読み込み、指定されたライターに読み込まれた順番で書き込みます。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • フィールド詳細

    • 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の長さがゼロの場合、文字は読み取られず、0が返されます。そうしないと、少なくとも1文字の読取りが試行されます。 ストリームが終了しているため、使用できる文字がない場合、値-1が返されます。そうしないと、少なくとも1つの文字が読み取られ、cbufに格納されます。

      パラメータ:
      cbuf - 転送先バッファ
      戻り値:
      読み込まれた文字数。ストリームの終わりに達した場合は -1
      例外:
      IOException - 入出力エラーが発生した場合
    • read

      public abstract int read(char[] cbuf, int off, int len) throws IOException
      配列の一部に文字を読み込みます。 このメソッドは入力の一部が有効になるか、入出力エラーが発生するか、あるいはストリームの終わりに達するまでブロックします。

      lenが0の場合、文字は読み取られず、0が返されます。そうしないと、少なくとも1文字の読取りが試行されます。 ストリームが終了しているため、使用できる文字がない場合、値-1が返されます。そうしないと、少なくとも1つの文字が読み取られ、cbufに格納されます。

      パラメータ:
      cbuf - 転送先バッファ
      off - 文字の格納開始オフセット
      len - 読み込む文字の最大数
      戻り値:
      読み込まれた文字数。ストリームの終わりに達した場合は -1
      例外:
      IndexOutOfBoundsException - offが負の場合、またはlenが負の場合、またはlencbuf.length - offより大きい場合
      IOException - 入出力エラーが発生した場合
    • 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 - outnullである場合
      導入されたバージョン:
      10