26.1.8.7 ストリームリーダ

System.inが属するInputStreamの段階では,入力データはただのバイト列,つまり8ビット単位のデータの列として扱われています.これを“文字”として解釈する役目が,入力ストリームのリーダ(InputStreamReader)です.このクラスのオブジェクトを作るときには,扱うべき入力ストリームを指定します.たとえば

InputStreamReader isreader = new InputStreamReader(System.in);

とすると,入力ストリームSystem.inを扱うリーダである変数isreaderが作られます.ここではたとえば,2バイトで一文字を表わす日本文字への対応などを行ないます.

さらに,入力ストリーム・リーダから次々と得られる文字を一度ためておいて,入力作業を効率化するとともに,数値や文字列などへ変換する作業をやりやすくしているのが,バッファリーダ(BufferedReader)です.このクラスのオブジェクトを作る時には,扱うべき入力ストリーム・リーダを指定します.たとえば,

BufferedReader keyboard = new BufferedReader(isreader);

とすると,リーダisreaderを扱うバッファリーダkeyboardが作られます.

これだけの準備をして,やっと快適(?)な文字入力が可能となります.ここで用意した BufferedReader クラスの変数keyboardによって,以下のような処理ができます.

int read()
1文字入力ですが,実際にはUnicodeという符号化を使っているので,2バイトが返ってくることもあります.
int read(char cb[], int start, int len)
InputStreamのreadと同じですが,byteではなく,charを扱っています.
String readLine()
行末コードを含まない文字列を読み込みます.