第90回 入出力の基本
引き続き「入出力の基本」について見ていきたいと思います。
今回はバイト単位で読み込む、入力バイトストリームについて見ていきます。
次のサンプルコードは、テキストファイルを読み込むプログラムです。
import java.io.BufferedInputStream; import java.io.FileInputStream; public class Main { public static void main(String[] args) { BufferedInputStream bufferedInputStream = null; try { bufferedInputStream = new BufferedInputStream(new FileInputStream("input.txt")); byte[] bytes = new byte[bufferedInputStream.available()]; bufferedInputStream.read(bytes); System.out.print(new String(bytes, "Shift-JIS")); } catch (Exception e) { e.printStackTrace(); } finally { if (bufferedInputStream != null) { try { bufferedInputStream.close(); } catch (Exception e) {} } } } }
FileInputStreamクラスは、ファイルのバイトストリームから読み込むためのクラスです。
前回と同様に、バッファリング機能を追加して読み込みます。
readメソッドにより読み込みを行いますが、読み込んだデータはバイト配列に格納されます。
そのため、バイトストリームから読み込めるだけの領域をもったバイト配列を生成し、readメソッドの引数に渡しています。
また、読み込んだ後、バイト配列を複合化し文字列を構築して出力しています。
複合化の際、文字セットを指定していますが、これを指定しない場合は、プラットフォームのデフォルト文字セットが使用されます。
バイトが同じでも文字セットが異なると異なる文字として表示されてしまうことがあるので、そのような場合は、読み込むテキストファイルの文字セットを指定して下さい。