第91回 入出力の基本
引き続き「入出力の基本」について見ていきたいと思います。
前回はテキストファイルをバイトストリームから読み込みました。
ファイルの文字セットがプラットフォームのデフォルトの文字セットと異なる場合、読み込んだ内容を複合化するのに文字セットを指定する必要がありました。
実は、前々回のようにFileReaderクラスで読み込んだ場合においても、ファイルの文字セットがプラットフォームのデフォルトの文字セットと異なるときは、うまく読み込むことができません。
そこで今回は、文字に複合化しつつ、バイトストリームから読み込む方法について見ていきたいと思います。
次のサンプルコードは、テキストファイルを読み込むプログラムです。
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { BufferedReader bufferedReader = null; try { FileInputStream fileInputStream = new FileInputStream("input.txt"); bufferedReader = new BufferedReader(new InputStreamReader (fileInputStream, "Shift-JIS")); while (bufferedReader.ready()) { System.out.println(bufferedReader.readLine()); } } catch (Exception e) { e.printStackTrace(); } finally { if (bufferedReader != null) { try { bufferedReader.close(); } catch (Exception e) {} } } } }
InputStreamReaderクラスは文字に複合化する機能を、入力バイトストリームに追加します。
複合化するための文字セットはコンストラクタで指定します。
あとは、InputStreamReaderクラスはReaderクラスを継承しているので、文字ストリームから読み込むのと同じように読み込むことができます。