テキストファイルが存在する場合は、そのテキストファイルの末尾に入力した文字を追記し、
存在しない場合は、新規にファイルを作成し、入力したテキストを出力するサンプルソースになります。
本サンプルソースは、以下の記事とほとんど一緒です。
FileOutputStream fos = new FileOutputStream(this.getFilename(), true)FileOutputStreamの2番目の引数にtrueを指定しています。
キーボードから文字を入力し、入力した文字列をファイルに出力します。
文字の入力を終了するには、.(dot)のみ入力してEnterキーを押してください。
本サンプルプログラムが終了します。
AddText.java UTF-8, LF
import java.lang.Exception;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.InputStreamReader;
import java.io.BufferedReader;
class AddText {
String filename;
private void setFilename(String s) {
this.filename = s;
}
private String getFilename() {
return this.filename;
}
private void usage() {
System.err.println("Usage: java AddText <add filename>");
System.exit(1);
}
private boolean inputLine(OutputStreamWriter osw) {
boolean ret = true;
try {
System.out.print("> "); // prompt
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String in = br.readLine();
if (in.equals(".")) { ret = false; } // input terminator
else { osw.write(in + System.getProperty("line.separator")); } // output input string
// br.close(); // stdinなので閉じる必要なし・閉じれない(閉じると例外発生)
// isr.close(); // stdinなので閉じる必要なし・閉じれない(閉じると例外発生)
} catch (Exception e) {
e.printStackTrace();
System.exit(2);
}
return ret;
}
private void run() {
String charcode = System.getProperty("file.encoding"); // default character code
try {
FileOutputStream fos = new FileOutputStream(this.getFilename(), true); // append is true
OutputStreamWriter osw = new OutputStreamWriter(fos, charcode);
while (inputLine(osw));
osw.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
System.exit(3);
}
}
AddText(String[] args) {
if (args.length != 1) {
usage();
}
this.setFilename(args[0]);
}
public static void main(String[] args) {
AddText me = new AddText(args);
me.run();
}
}
コンパイルして実行します。
本プログラムは、出力するファイルを引数として渡す必要があります。
$ javac AddText.java
$ java AddText Usage: java AddText <add filename>
$ ls -l add.txt ls: 'add.txt' にアクセスできません: No such file or directory
$ java AddText add.txt > 1 > 2 > 3 > . $ cat add.txt 1 2 3
$ java AddText add.txt > 111 > 222 > 333 > . $ cat add.txt 1 2 3 111 222 333追記されているのが確認できます。
以上、Javaでファイルにテキストを追記するサンプルソースでした。