Java アドバンス

Java でのファイル書き込み

1. ファイルへの書き込み

Javaの学習を始めたばかりの方にとって、テキストをファイルに書き込む最も簡単な方法は FileWriter クラスを使用することです。

以下の例では、FileWriter とその write() メソッドを組み合わせて、ファイルを作成し、テキストを書き込んでいます。

注意: 書き込みが完了したら、必ず close() メソッドを呼び出してライターを閉じる必要があります。

実装例:

import java.io.FileWriter;   // FileWriterクラスをインポート
import java.io.IOException;  // IOExceptionクラスをインポート

public class WriteToFile {
  public static void main(String[] args) {
    try {
      FileWriter myWriter = new FileWriter("filename.txt");
      myWriter.write("Javaでのファイル操作はトリッキーかもしれませんが、十分に楽しいものです!");
      myWriter.close();  // 手動でクローズする必要があります
      System.out.println("ファイルへの書き込みに成功しました。");
    } catch (IOException e) {
      System.out.println("エラーが発生しました。");
      e.printStackTrace();
    }
  }
}

出力結果:

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

解説:
このプログラムは filename.txt という名前のファイルにテキストを書き込もうと試みます。すべてが正常に動作すれば、コンソールに「ファイルへの書き込みに成功しました。」と表示されます。何らかの問題が発生した場合(例えば、ファイルが開けないなど)、代わりに「エラーが発生しました。」と出力されます。

2. try-with-resources を使用したファイル書き込み

Java 7以降では、try-with-resources を使用できます。これにより、エラーが発生した場合でもライターが自動的にクローズされることが保証されます。

実装例:

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

public class WriteToFile {
  public static void main(String[] args) {
    // ここでは FileWriter が自動的にクローズされます
    try (FileWriter myWriter = new FileWriter("filename.txt")) {
      myWriter.write("Javaでのファイル操作はトリッキーかもしれませんが、十分に楽しいものです!");
      System.out.println("ファイルへの書き込みに成功しました。");
    } catch (IOException e) {
      System.out.println("エラーが発生しました。");
      e.printStackTrace();
    }
  }
}

3. ファイルへの追記(Append)

通常、FileWriter はファイルが既に存在する場合、その内容を上書き(Overwrite)します。既存の内容を削除せずに、ファイルの末尾に新しいコンテンツを追加したい場合は、2つの引数を持つコンストラクタを使用し、第2パラメータに true を渡します。これにより、ライターが appendモード になります。

実装例:

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

public class AppendToFile {
  public static void main(String[] args) {
    // true = appendモード
    try (FileWriter myWriter = new FileWriter("filename.txt", true)) {
      myWriter.write("\n追記されたテキスト!");
      System.out.println("ファイルへの追記に成功しました。");
    } catch (IOException e) {
      System.out.println("エラーが発生しました。");
      e.printStackTrace();
    }
  }
}

出力結果:

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

解説:
このプログラムは、filename.txt の内容を置き換える代わりに、末尾に「追記されたテキスト!」という文字列を追加します。

注記: ファイルがまだ存在しない場合、Javaは追記を行う前に新規ファイルを作成します。
ヒント: ファイルの中身を確認する方法については、「Javaファイル読み取り」の章を参照してください。

4. その他のファイル書き込み手法

Javaにはファイルを書き込むために使用できるクラスがいくつかあります。

  • FileWriter:基本的なテキスト操作において最もシンプルな選択肢です。
  • BufferedWriter:高速であり便利な機能をサポートしているため、大きなテキストファイルを扱う際に適しています。
  • FileOutputStream:画像、音声、PDFなどのバイナリデータ(Binary data)を扱う場合に最適です。