こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

BufferedReaderの内部動作について

Java入門書などで勉強中の初学者です。
BufferedReaderの動作についてよくわかっていないため、以下の内容にお答えいただけると幸いです。

- BufferedReaderがデフォルトで保持できるデータサイズ
- 確保しているバッファサイズを超えた文字数をreadLine()した時にどのような動作になるか
- どのような時にデフォルトのバッファサイズを超えるのか
- バッファサイズをデフォルトより大きくして指定した場合のデメリット

以上、よろしくお願い致します。

※OKWAVEより補足:「Webシステム開発」についての質問です。

投稿日時 - 2019-04-16 11:07:37

QNo.9607306

暇なときに回答ください

質問者が選んだベストアンサー

勉強お疲れ様です。
わかる範囲でお答えします。
1、BufferedReaderがデフォルトで保持できるデータサイズ
こちらは公式文書には明記されていませんが8192だと言うのが意見として多いですね。
https://stackoverflow.com/questions/16973843/bufferedreader-default-buffer-size


2、確保しているバッファサイズを超えた文字数をreadLine()した時にどのような動作になるか
こちらはコンストラクタの第二引数にバッファサイズを指定することで初心者の方でも検証可能だと思うので是非調べてみてください。
コンストラクタによるバッファサイズの指定の例はこちらです。
以下なら100バイトをサイズとして指定したと言うことになります。
このサイズを超えるものを入れてみてください。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in),100)

3、どのような時にデフォルトのバッファサイズを超えるのか
BufferedReader クラスはテキストファイルなどの読み込みなどにも使用されますのでその際には読み込むものが1で回答したサイズを超えれば発生しますね。


4、バッファサイズをデフォルトより大きくして指定した場合のデメリット
単純にメモリを食います。
Webのアプリなどで使う場合は多人数が同時に使用する可能性があるので注意が必要ですね。

以上です。
自身で検証してみることで文法の学習にもなります。
また、なぜこれを知りたいのかも明記すると答えてくれる人も増えるかと思いますよ。

投稿日時 - 2019-04-16 18:32:27

お礼

丁寧な解答ありがとうございました。とてもわかりやすくまとまっており助かりました。
また海外サイトや自身で実装して確認するなどもを行い、質問サイトだけに頼らず、調べる術も学習していきたいと思います。

ありがとうございました。

投稿日時 - 2019-04-17 09:44:05

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

入門書があるなら書いてあるはずです。
使い方だけ読んでいたらトラブルのもとですよ。
あなたが質問してきた内容はあなたが勉強する内容です。
入門書を読んで、PCなどで動かしてみてどうなるかというのも
勉強のうちです。
新しい事が出てくるたびにここに質問するつもりですか?
それでは身につきません。

投稿日時 - 2019-04-16 11:17:35

あなたにオススメの質問