#author("2017-07-12T17:15:52+09:00","","") #navi(../) * テキストファイルを追記モード開き文字列を追加する [#bdc3cc87] テキストファイルが存在する場合は、そのテキストファイルの末尾に入力した文字を追記し、~ 存在しない場合は、新規にファイルを作成し、入力したテキストを出力するサンプルソースになります。~ * 関連記事 [#cbe2f795] -[[テキストファイルの読み込みサンプル>ファイル操作/テキストファイルの読み込み]] -[[テキストファイルの出力>ファイル操作/テキストファイルの出力]] //-[[ファイルを追記モード開き文字列を追加する>ファイル操作/ファイルを追記モード開き文字列を追加する]] -[[CSV取込みサンプルを作ってみた>ファイル操作/CSV取込みサンプルを作ってみた]] * テキストをファイルに追記するサンプルコード [#e43aa35d] 本サンプルソースは、以下の記事とほとんど一緒です。 -[[テキストファイル作成および出力>ファイル操作/テキストファイルの出力]] 上行のリンクと異なる箇所(重要な箇所)は、以下の行になります。 FileOutputStream fos = new FileOutputStream(this.getFilename(), true) FileOutputStreamの2番目の引数にtrueを指定しています。~ 2番目の引数はappendを意味し、trueを指定することにより追記書き込みとなります。~ -[[クラス FileOutputStream>https://docs.oracle.com/javase/jp/6/api/java/io/FileOutputStream.html#FileOutputStream(java.io.File,%20boolean)]] #ref(AddText.java) ** サンプルプログラムの操作について [#jf55a56a] キーボードから文字を入力し、入力した文字列をファイルに出力します。~ 文字の入力を終了するには、.(dot)のみ入力してEnterキーを押してください。~ 本サンプルプログラムが終了します。~ ** サンプルソース [#d83be623] &ref(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(); } } * 実行結果 [#d597225f] コンパイルして実行します。~ 本プログラムは、出力するファイルを引数として渡す必要があります。 + コンパイル $ javac AddText.java #br + 引数なしで実行した場合、使い方(Usage)が表示されます。 $ java AddText Usage: java AddText <add filename> #br + 出力ファイルをadd.txtとして実行します。 +ファイルがないことを確認。 $ ls -l add.txt ls: 'add.txt' にアクセスできません: No such file or directory #br + 文字を入力しファイルに出力されていることを確認。 $ java AddText add.txt > 1 > 2 > 3 > . $ cat add.txt 1 2 3 #br +再実行しファイルに追記されていることを確認。 $ java AddText add.txt > 111 > 222 > 333 > . $ cat add.txt 1 2 3 111 222 333 追記されているのが確認できます。 以上、Javaでファイルにテキストを追記するサンプルソースでした。