07. ファイルへ書き込む WFile.java

キーボードから文字を読み取り、ファイルに書き込むプログラム。

 

WFile.java

 //
// WFile.java
//
// キーボードの入力をファイルに書き込む
//
// java WFile (ファイル名)
//

import java.io.* ;

public class WFile {

	public static void main( String[] args ) {
		byte[] buff = new byte[4096] ;	// バッファ定義
		FileOutputStream outFile = null ;	// ファイル書込用オブジェクト
		
		// コマンドライン引数のチェック
		if ( args.length <= 0 ) {
			System.out.println( "ファイル名を指定してください!" ) ;
			System.exit( 1 ) ;
		}
		
		// メッセージを表示する
		System.out.println( "¥"/¥" で終了します。" ) ;
		
		// ファイルを準備する
		try {
			outFile = new FileOutputStream( args[0] ) ;
		} catch( IOException e ) {
			System.err.print( "ファイル[" ) ;
			System.err.print( args[0] ) ;
			System.err.println( "]を開く事ができません!" ) ;
			System.exit( 1 );
		}
		
		// キーボード入力をファイルへ書き込む
		while( true ) {
			try {
				int n = System.in.read( buff ) ;	// キーボード読み込み
				if ( buff[0] == '/' ) { break; }	// 終了
				outFile.write( buff, 0, n ) ;		// 書き出し
			} catch( Exception e ) {
				System.exit( 1 ) ;
			}
		}
		
		// ファイルを閉じる
		try {
			outFile.close() ;
		} catch( IOException e ) {
			System.err.println( "ファイルを閉じることができません!" ) ;
			System.exit( 1 );
		}
	}
}

 

 ■コンパイル

 $ javac WFile.java

 

■実行

 $ java WFile test.txt
"/" で終了します。
aiueo     
かきくけこ
/

 

■確認する

 テキストエディタで、test.txt を開くか、ターミナルでcatコマンドを使って確認する。

$ cat test.txt
aiueo
かきくけこ 

 

■実行その2

制御コードも書き込める事を確認する。 

control + A などを入力する。 

$ java WFile test.txt
"/" で終了します。
^A^B
/

 odコマンドで、中身を確認する。

$ od -h test.txt 
0000000      0102    0a00                                                
0000003

 

■実行その3

 test.txtを書き込み禁止にする。

$ chmod 444 test.txt

実行する。

 $ java WFile test.txt
"/" で終了します。
ファイル[test.txt]を開く事ができません!