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]を開く事ができません!