Home > Java | システム開発 > BufferedReaderの終端判定とか

BufferedReaderの終端判定とか

@IT:連載 基礎から学ぶサーブレット/JSP 第9回

古い記事なのですが、気になる箇所を見つけました。

訂正のお知らせ(2009年3月31日)
読者から上記のサンプルコード、「while (objBr.ready())」について貴重なご指摘をいただき、コードを差し替え、また編集部注を追記させて頂きました。
内容について正確を期せずに混乱を招いた点、読者の皆様におわび申し上げます。

なぜか最近修正されています。
BufferedReader#ready() による判定から BufferedReader#readLine() の判定に変更されたということなのでしょうけど、変更内容について言及されていないのため、なにが問題だったのかわからないのです。

調べてみたところ、ready() に気になる記述がありました。

次の read() が入力をブロックしないのが確実な場合は true、そうでない場合は false。false が返されても、次の読み込みが確実にブロックするというわけでない
BufferedReader (Java 2 Platform SE 5.0)

ものすごくわかりにくいのですが、”falseでも読み込み対象がなくなったとは限らないよ”ということなんだと思います。疑わしきは false。
つまり、ファイル終端まで読み込むための判定とは目的が違うということです。

まあ記事の修正と関係あるのかはわかりませんが、ファイルなどを全部読み込む目的で ready() は使わないほうがよさそうです。

■ 参考
2003年12月のアレ

Javaファイル関連メモ(Hishidama’s Java File Memo)

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.magellanic.net/archives/437/trackback
Listed below are links to weblogs that reference
BufferedReaderの終端判定とか from Olen Onnellinen 2

Home > Java | システム開発 > BufferedReaderの終端判定とか

Search
Feeds
Link
あわせて読みたいブログパーツ
Meta

Return to page top