●テキストファイルを読み込む java.io クラス BufferedReader
コンストラクタの詳細
長瀬智也,100やさしいJava 活用編 第2版 (やさしいシリーズ)/高橋 麻奈

¥2,730
Amazon.co.jp
これならわかるJava入門の入門 第2版/坂下 夕里

¥1,680
Amazon.co.jp
SUN教科書 Javaプログラマ(SJC-P) 5.0・6.0両対応(試験番号310-055、310-065)/ポール・サンヘラ

¥3,990
Amazon.co.jp
コンストラクタの詳細
BufferedReader
○public BufferedReader(Reader in, int sz)
指定されたサイズのバッファでバッファリングされた、文字型入力ストリームを作成します。
パラメータ:
in - Reader
sz - 入力バッファのサイズ
例外:
IllegalArgumentException - sz が 0 以下の場合
-----------------------------------
○public BufferedReader(Reader in)
デフォルトサイズのバッファでバッファリングされた、文字型入力ストリームを作成します。
パラメータ:
in - Reader
-------------------------------------------------------------------
java.lang.Object
|
+--java.io.Reader
|
+--java.io.BufferedReader
-------------------------------------------------------------------
public class BufferedReader
extends Reader
-------------------------------------------------------------------
文字、配列、行をバッファリングすることによって、
文字型入力ストリームからテキストを効率良く読み込みます。
バッファのサイズは、デフォルト値のままにすることも、特定の値を指定することもできます。
デフォルト値は、通常の使い方では十分な大きさです。
一般的に、Reader に対して読み込み要求が出されると、
それに対応する基本となる文字型ストリームまたはバイトストリームへの読み込み要求が発行されます。
このため、 FileReader や InputStreamReader のように read() オペレーションの効率の良くない Reader では、
その周りを BufferedReader でラップすることをお勧めします。
たとえば、次の例は指定されたファイルからの入力をバッファします。
BufferedReader in
= new BufferedReader(new FileReader("foo.in"));
バッファリングせずに read()、readLine() を使うと、
呼び出しごとにファイルからバイトを読み込み、文字型に変換し、
そのたびに復帰するので、非常に効率が悪くなります。
テキスト入力に対して DataInputStream を使うプログラムは、
各 DataInputStream を適切な BufferedReader に入れ替えることによって地域対応することができます。
-------------------------------------------------------------------
メソッドの詳細
read
public int read()
throws IOException
単一の文字を読み込みます。
オーバーライド:
クラス Reader 内の read
戻り値:
0 ~ 65535 (0x00-0xffff) の範囲の整数としての、読み込まれた文字。
ストリームの終わりに達した場合は -1
例外:
IOException - 入出力エラーが発生した場合
read
public int read(char[] cbuf, int off, int len)
throws IOException
配列の一部に文字を読み込みます。
このメソッドは、Reader クラスの対応する read メソッドの汎用規約を実装します。
より便利なように、このメソッドは基本となるストリームの read メソッドを繰り返し呼び出して、
できるだけ多くの文字数を読み込もうとします。この read の繰り返しは、
以下の条件の 1 つが true になるまで行われます。
* 指定された文字数が読み込まれた
* 基本となるストリームの read メソッドが、ファイルの終わりを示す -1 を返した
* 基本となるストリームの ready メソッドが、
それ以上の入力要求がブロックされることを示す false を返した
基本となるストリームの最初の read がファイルの終わりを示す -1 を返すと、
このメソッドは -1 を返します。
そうでない場合、このメソッドは実際に読み込まれた文字数を返します。
このクラスのサブクラスは、同じ方法でできるだけ多くの文字数を読み込むことが推奨されます。
ただし、これは必須ではありません。
通常このメソッドは、このストリームの文字バッファから文字を取得し、
必要に応じて基本となるストリームからそのバッファを埋めます。
しかし、バッファが空で、マークが無効で、要求された長さがバッファと同じ大きさ以上の場合、
このメソッドは基本となるストリームから、指定された配列に直接文字を読み込みます。
このため、余分な BufferedReader が、データを不必要にコピーすることがありません。
定義:
クラス Reader 内の read
パラメータ:
cbuf - 転送先バッファ
off - 文字の格納開始オフセット
len - 読み込む文字の最大数
戻り値:
読み込まれた文字数。ストリームの終わりに達した場合は -1
例外:
IOException - 入出力エラーが発生した場合
readLine
public String readLine()
throws IOException
1 行のテキストを読み込みます。1 行の終端は、改行 ('\n') か、復帰 ('\r')、
または復行とそれに続く改行のどれかで認識されます。
戻り値:
行の内容を含む文字列、ただし行の終端文字は含めない。
ストリームの終わりに達している場合は null
例外:
IOException - 入出力エラーが発生した場合
skip
public long skip(long n)
throws IOException
文字をスキップします。
オーバーライド:
クラス Reader 内の skip
パラメータ:
n - スキップする文字数
戻り値:
実際にスキップした文字数
例外:
IllegalArgumentException - n が負の値の場合
IOException - 入出力エラーが発生した場合
ready
public boolean ready()
throws IOException
ストリームが読み込み可能かどうかを返します。バッファリングされた文字型ストリームは、
空白ではないか、または基本となる文字型ストリームが読み込み可能であるときに読み込み可能です。
オーバーライド:
クラス Reader 内の ready
戻り値:
次の read() が入力をブロックしないのが確実な場合は true、
そうでない場合は false。false が返されても、
次の読み込みが確実にブロックするというわけでない
例外:
IOException - 入出力エラーが発生した場合
markSupported
public boolean markSupported()
このストリームが、実行する mark() 操作をサポートするかどうかを通知します。
オーバーライド:
クラス Reader 内の markSupported
戻り値:
このストリームが mark オペレーションをサポートする場合に限り true
mark
public void mark(int readAheadLimit)
throws IOException
ストリームの現在位置にマークを設定します。以降 reset() を呼び出すと、
ストリームの位置がこの位置に変更されます。
オーバーライド:
クラス Reader 内の mark
パラメータ:
readAheadLimit - マークを保持しながら読み込むことができる文字数の上限。
この数の文字を読み込んだあとでストリームをリセットしようとすると失敗する場合がある。
入力バッファのサイズより大きい限界値を指定すると、
そのサイズが限界より小さくない新しいバッファが割り当てられる。
そのため、大きな値は注意して使用する必要がある
例外:
IllegalArgumentException - readAheadLimit が負の値の場合
IOException - 入出力エラーが発生した場合
reset
public void reset()
throws IOException
ストリームを、もっとも新しいマーク位置にリセットします。
オーバーライド:
クラス Reader 内の reset
例外:
IOException - ストリームにマークを設定できなかった場合、またはマークが無効になった場合
close
public void close()
throws IOException
ストリームを閉じます。
定義:
クラス Reader 内の close
例外:
IOException - 入出力エラーが発生した場合
-------------------------------------------------------------------
// 「test.txt」から氏名と点数を読込んで[name]と[ten]に格納し、人数を[ninzu]に格納する
BufferedReader br = new BufferedReader(new FileReader("test.txt"));
String rec;
for(int i = 0; ((rec = br.readLine()) != null) && (i < 10); i++){
String dat[] = rec.split(",");
name[i] = dat[0];
tensu[i] = Integer.parseInt(dat[1]);
ninzu = i;
}
br.close();
-------------------------------------------------------------------
○test.txt
中居正広,10
木村拓哉,20
稲垣吾郎,30
草彅剛,40
香取慎吾,50
城島茂,60
山口達也,70
国分太一,80
松岡昌宏,90
長瀬智也,100やさしいJava 活用編 第2版 (やさしいシリーズ)/高橋 麻奈

¥2,730
Amazon.co.jp
これならわかるJava入門の入門 第2版/坂下 夕里

¥1,680
Amazon.co.jp
SUN教科書 Javaプログラマ(SJC-P) 5.0・6.0両対応(試験番号310-055、310-065)/ポール・サンヘラ

¥3,990
Amazon.co.jp