テキストファイルが存在する場合は、そのテキストファイルの末尾に入力した文字を追記し、
存在しない場合は、新規にファイルを作成し、入力したテキストを出力するサンプルソースになります。
本サンプルソースは、以下の記事とほとんど一緒です。
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でファイルにテキストを追記するサンプルソースでした。