「こんにちは、アミーゴ! あなたは長い間、BufferedReaderクラスとInputStreamReaderクラスを使用してきました。では、これらが実際に何をするのかを見てみましょう。」

InputStreamReaderクラスは InputStreamインターフェイスからReaderインターフェイスへの古典的なアダプターです。ここでも付け加えることは何もありません。

しかし、要するに、こういうことが起こるのです。InputStreamReaderオブジェクトから次の文字をリクエスト (読み取り) すると、コンストラクターに渡されたInputStreamから数バイトを読み取り、それらを 1 つの文字として返します。

しかし、Reader は操作するのに最も便利なオブジェクトではありません。多くの場合、必要なのは、ユーザーが入力したすべての文字を一度に読み取ることではなく、これらの文字を複数の行に分割することです。

「でも、Reader クラスにはread (CharBuffer s) メソッドがある。それは使えないの?」

「このメソッドは、バッファのサイズのチャンクでデータを読み取り、CharBuffer オブジェクトに配置します。」

通常、テキストは複数の行に分かれています。したがって、 read(CharBuffer s) メソッドは複数の行を一度に読み取る可能性があります。テキストを行末まで正確に読み取る必要がある場合 (つまり、改行文字までの行内のすべての文字)、別のものを探した方がよいでしょう。そして、代替方法も存在します。BufferedReaderクラス内。

Reader 上の便利な構造である BufferedReader クラスには、非常に便利なメソッド readLine() が 1つあります。このメソッドを使用すると、Reader からテキスト行全体を一度に読み取ることができます。コード内で readLine を呼び出すと、改行文字が見つかるまで Reader オブジェクトから文字が読み取られます。改行文字が見つかると、メソッドはこれらの文字を 1 つの文字列に結合して返します。

「私はこれを定期的に使っていましたが、それがどのように機能するのか知りませんでした。今では分かりました。ありがとう、キム。」