Java アドバンス

Java BufferedWriter

1. BufferedWriter

BufferedWriterクラスは、テキストを1行ずつ、あるいは文字列ごとにファイルへ書き込むために使用されます。デフォルトでは、指定したファイルが既に存在する場合、その内容は新しいデータによって上書き(Overwrite)されます。

2. テキストファイルへの書き込み

BufferedWriterFileWriterと組み合わせて、ファイルにテキストを書き込みます。write()メソッドでテキストを追加し、newLine()メソッドを使用することでプラットフォームに適した改行コードを挿入できます。

2.1 実装コード例:新規書き込み(上書き)

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Main {
  public static void main(String[] args) {
    // try-with-resources:ストリームは自動的にクローズされる
    try (BufferedWriter bw = new BufferedWriter(new FileWriter("filename.txt"))) {
      bw.write("1行目のテキスト");
      bw.newLine();  // 改行を挿入
      bw.write("2行目のテキスト");
      System.out.println("ファイルへの書き込みに成功しました。");
    } catch (IOException e) {
      System.out.println("ファイルの書き込み中にエラーが発生しました。");
    }
  }
}

出力結果:

ファイルへの書き込みに成功しました。

解説: このプログラムは filename.txt を作成(または上書き)し、2行のテキストを書き込みます。newLine() メソッドにより、"1行目のテキスト" と "2行目のテキスト" の間に適切な改行が挿入されます。正常に処理が完了すると、コンソールに成功メッセージが表示されます。

3. テキストファイルへの追記

既存の内容を保持したまま、ファイルの末尾に新しいコンテンツを追加(追記)したい場合は、FileWriterのコンストラクタの第2引数に true を渡します。

3.1 実装コード例:追記モード(Append Mode)

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Main {
  public static void main(String[] args) {
    // 第2引数に true を指定 = 追記モード(既存の内容を保持)
    try (BufferedWriter bw = new BufferedWriter(new FileWriter("filename.txt", true))) {
      bw.newLine();                      // 新しい行に移動
      bw.write("追記された行");           // 末尾に新しいテキストを追加
      System.out.println("ファイルへの追記に成功しました。");
    } catch (IOException e) {
      System.out.println("ファイルの書き込み中にエラーが発生しました。");
    }
  }
}

出力結果:

ファイルへの追記に成功しました。

解説: このプログラムは filename.txt の既存の内容を消去することなく、最後に "追記された行" というテキストを新しい行として追加します。実行後、コンソールに成功メッセージが表示されます。