質問: fr.read(); とすることにより、一文字目を読み込んでいます。 次にwhile文の中で二文字目以降を読むことになっていますが、なぜ二文字目以降を読めるのでしょうか。 このコードのどこの部分が一文字目ではなく、二文字目にシフトさせるのかわかりません。 一体どうして二文字目以降を読むことができるのでしょうか。 回答お願いします。
回答: 詳細はJava8 API リファレンスにもありますけれど、やや不親切ですね。 FileReaderなどの入力ストリーム系のクラスは読み込んだ位置を覚える機能もあり、read()メソッドは次の位置にある1文字を読み込む処理を行います。 まだ一度も読み込んでいなければ先頭の文字を返しますし、readメソッドを呼ばれるたびに読み込む位置を1つずらしてくれます。 次に読み込む位置を覚えてくれる機能がありますし、特定の位置から読み直す機能も提供されています。