BufferedReaderのready()がfalseだからといって終わりではない

こんなコードを書いてたまに全部読まずに尻切れトンボになる現象を経験した。

while (br.ready()) {
  text.append(br.readLine() + "\r\n");
}

調べるとready()は「すぐ読めるかどうかを返す」だけであり、バッファ入力を読みきったかどうかを返すわけではないとの事。
おそらくready()でチェックして時間があるようなら別の処理を行うような用途なのだろう。
次のようなコードばかりな理由がやっと分かった。

String line;
while ((line = br.readLine()) != null) {
  text.append(line + "\r\n");
}