InputStream

Stream? Reader? (復習)

Stream: データの流れを表すクラス
Reader: Streamのデータを読むクラス

ファイルの入出力での使用例

  BufferedReader r = new BufferedReader(
      new InputStreamReader(
      new FileInputStream(filename), encoding));

InputStreamReader

Streamのencoding(文字コード)に対応できる Reader

コンストラクタ

読み込む先である InputStream と、encoding(日本語なら漢字コード)を指定

encoding

日本語では、"EUC_JP", "SJIS", "ISO2022JP"など。 入力では、"JISAutoDetect"と指定すると自動判別になる。

半角カナを含む SJIS と EUC_JP との自動判別は厳密には不可能

InputStreamReader の使用例

ファイルの場合

InputStream iStream = new FileInputStream("foo.txt");
InputStreamReader r = new InputStreamReader(iStream, "EUC_JP");
InputStreamReader r = new InputStreamReader(
      new FileInputStream("foo.txt"), "EUC_JP"));

InputStreamReader の使用例

URLConnectionの場合

URL url = URL("http://java.sun.com/");
URLConnection urlConnection = url.openConnection();
urlConnection.connect();
InputStreamReader r = new InputStreamReader(
    urlConnection.getInputStream(), "JISAutoDetect");

BufferedReader

バッファリングをする Reader

データを読む際には、ある程度の大きさのデータをまとめて読み込んでメモリに蓄えてしまい、プログラムには要求しただけの量を読んだように見せることによって、速度を上げる技術

コンストラクタ BufferedReader(InputStreamReader isr)