CatCommand2.java
import java.io.File;
import java.io.FileReader;
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.io.IOException;
/** ファイルの内容を読み込み、標準出力へ表示する CatCommand2クラス */
public class CatCommand2 {
/** 最初に呼び出されるメソッド */
public static void main( String argv[] ) {
File file; // 読み込むファイル
FileReader fr; // ファイルを読み込むメソッドを提供
BufferedReader br; // バッファリングして読み込むメソッドを提供
PrintWriter pw; // 標準出力に表示するメソッドを提供
try{
if( argv.length != 1 ) { // コマンド引数の指定が不正
System.err.println("Usage: java CatCommand filename");
System.exit(0);
}
file = new File( argv[0] ); // ファイルオブジェクトの生成
if( !file.isFile() ) { // 通常のファイルではない
System.err.println( argv[0] + "is not a normal file.");
System.exit(0);
}
if( !file.canRead() ) { // ファイルの読み込み許可がない
System.err.println("File" + argv[0] + "not readable.");
System.exit(0);
}
fr = new FileReader( file );
br = new BufferedReader( fr );
pw = new PrintWriter( System.out, true );
// 1行単位で入出力
String s;
while( ( s = br.readLine() ) != null ) {
pw.println( s );
}
}
catch( NullPointerException e ) { // 文字列データがない
System.err.println("Usage: java CatCommand filename");
System.exit(0);
}
catch( IOException e ) { // 入出力のエラーが発生
System.err.println("IO Error....");
System.exit(0);
}
}
}