26.1.8.8 ファイルからの入力

標準入力System.inはInputStream型であり,プログラムの開始時点において(可能なら)既に用意されています.それで我々は,とくに準備をしなくても,いきなり“System.in.read()”といったぐあいにして使用することができます.

ファイルからの入力の場合はそうはゆきませんので,ファイルを(読み取り用として)準備する必要があります. これにはFileInputStreamというクラスを用います.

まず例を見てみましょう.

import java.io.*;         // ファイル入出力をするために必要です.

class ShowFile{
    public static void main(String argv[]){
	int c = 0;
	try{                            // このプログラム自身を見てみます.
	    FileInputStream fin = new FileInputStream("ShowFile.java");
	    c = fin.read ();
	    while(c != -1){	// -1はファイルの終了の印です.
		System.out.print((char)c);
		c = fin.read ();
	    }
	    fin.close();                     // 入力終了(close)です.
	}catch (FileNotFoundException e){
	    System.err.println(e);         // ファイルがない(開けない)場合の処理
	}catch(IOException e){
	    System.err.println(e);         // 何らかの入力異常時の処理
	}
    } //end main
} //end class

fileShowFile.java (iso-2022-jp)

上の

FileInputStream fin = new FileInputStream("ShowFile.java");

の部分でファイルを開いています.

ファイルを開く際にも,ファイルからデータを読み込む際にも異常が起こる可能性があるので 入力処理の部分は

try{
...
}

で囲んでやります.このプログラムでは

が起きる可能性があるのでcatchで「つかまえて」やります.