FileReaderとBufferedReaderの内部構造がいまいち理解できていません。
html
1FileReader f = new FileReader("data.txt"); 2BufferedReader bf = new BufferedReader(f);
FileReaderは1文字ずつ文字を読み込むと習いました。
BufferedReaderがreadLine()メソッドで文字を読み込む際は1文字読み込むのを何回も繰り返してバッファにためるのでしょうか。
いまいちイメージがつきません。
読み込み処理は具体的にどういった内部処理がされているか教えてください。
javadoc を読むか jdk に添付されているコードをよんでください
> BufferedReaderがreadLine()メソッドで文字を読み込む際は1文字読み込むのを何回も繰り返してバッファにためるのでしょうか。
たぶん、違うよ。それじゃ遅いから。
momon-gaさん
回答ありがとうございます。
BufferedReaderはreadLine()というものがありますが、
毎回1行分(?)読み込むという認識であってますでしょうか。
ソース見てないんで、わからないですけど。
1行100バイトで10行のファイルがあった場合、
まとめて、1000バイトで1回ファイルアクセスして、内部にもちます。
readLineが呼ばれるたびに、メモリ上の1000バイトから、100バイト分を返す感じじゃないですか
> 毎回1行分(?)読み込むという認識であってますでしょうか。
毎回1行分の読み込み?というのを上記でいうと、ファイルI/Oの話であれば、NOだと思ってます。
> FileReaderは1文字ずつ文字を読み込む
というのも厳密には違ってJavadoc読めばわかる。バッファ分読み込むっていうメソッドもあって、
それを使えば1文字づつじゃないのよね。
想像の話なので、これは回答じゃないです。(読み込みをバッファするって、こうゆうもんでしょ?的な話)
> 読み込み処理は具体的にどういった内部処理がされているか教えてください。
は、やはり自分でソース読むか、有識者の回答を待つかだねぇ。
1行ごとの読み込みではない
かといって大容量のデータをすべて一度に読み込むわけではない
1度に読み込める量は決まっていて、
読み込み→表示(バッファがなくなるまで)→読み込み→表示→(繰り返し)
といった感じなのかなと推測しました。
回答を待ちつつ、自分でも調べてみます。
ありがとうございます。
回答1件
あなたの回答
tips
プレビュー