ファイルに追加で書き込む

広告

前のページのサンプルは、上書きでファイルにテキストを書き込んでいました。つまり書き込もうとしているファイルに、何か他のことが書いてあったとしても、全て消した上で新しいテキストを書き込んでいることになります。

今回は、既にファイルに書かれているテキストは消さずに、ファイルの最後に追加でテキストを書き込む方法を見ていきます。と言っても変更箇所は1箇所だけでFireWriterクラスのオブジェクトを作成する時に、下記のように2番目の引数として"true"を指定するだけです。

File file = new File(file_name);
FileWriter filewriter = new FileWriter(file, true);

2番目の引数にtrueを指定した場合、何か書き込みを行った場合はファイルの最後に書き込まれます。その為、既にファイルに入っているテキストは変更せずに追加で書き込みが行われます。

逆に2番目の引数に"false"を指定した場合、書き込みを行うとファイルの先頭に書き込まれます。その為、既にファイルに入っていたテキストはいったん消された上で書き込まれます(上書きしくのではなく、いったん全て消えた上で書き込みが行われます)。

サンプル

では試してみましょう。

streamTest5.java

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

class streamTest5{
  public static void main(String args[]){
    try{
      File file = new File("c:\\tmp\\test.txt");

      if (checkBeforeWritefile(file)){
        FileWriter filewriter = new FileWriter(file, true);

        filewriter.write("はい。元気です\r\n");
        filewriter.write("ではまた\r\n");

        filewriter.close();
      }else{
        System.out.println("ファイルに書き込めません");
      }
    }catch(IOException e){
      System.out.println(e);
    }
  }

  private static boolean checkBeforeWritefile(File file){
    if (file.exists()){
      if (file.isFile() && file.canWrite()){
        return true;
      }
    }

    return false;
  }
}

上記をコンパイルして実際に実行してみると下記のようになります。

p6

対象となっているファイルはプログラム実行前は下記のようになっていました。

p7

プログラムを実行すると下記のようにファイルの最後に書き込みが行われています。

p8

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。