Javaによるテキストファイルの書き込み
このページでは、Javaを使用してテキストファイルにデータを書き込む方法を詳しく解説します。複数の方法や例を紹介し、それぞれの特徴や使用ケースについても触れます。
FileWriter を使用した書き込み
FileWriter
は、Javaで最も基本的なファイル書き込み用クラスです。文字列をファイルに直接書き込むために使用されます。
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try (FileWriter writer = new FileWriter("example.txt")) {
writer.write("Hello, FileWriter!\n");
writer.write("This is a simple example.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
特徴:
- シンプルで使いやすい。
- バッファリングがなく、頻繁な書き込み操作は効率が悪い場合がある。
BufferedWriter を使用した書き込み
BufferedWriter
は、バッファリングを追加することで、効率的な書き込みを提供します。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt"))) {
writer.write("Hello, BufferedWriter!\n");
writer.write("This is a buffered example.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
特徴:
- 効率的な書き込みが可能。
- 大きなデータセットに適している。
PrintWriter を使用した書き込み
PrintWriter
は、文字列やプリミティブ型のデータを書き込むための便利なメソッドを提供します。
import java.io.PrintWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try (PrintWriter writer = new PrintWriter("example.txt")) {
writer.println("Hello, PrintWriter!");
writer.printf("Formatted number: %.2f\n", 123.456);
} catch (IOException e) {
e.printStackTrace();
}
}
}
特徴:
- フォーマット済みの文字列を書き込むのに便利。
- 標準出力に似た使い勝手。
Files クラスを使用した書き込み
Files
クラスのユーティリティメソッドを使用すると、簡単にファイル操作ができます。
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
import java.util.List;
public class Main {
public static void main(String[] args) {
try {
List<String> lines = List.of("Hello, Files!", "This is an example using Files.write.");
Files.write(Paths.get("example.txt"), lines);
} catch (IOException e) {
e.printStackTrace();
}
}
}
特徴:
- コードが簡潔。
- ファイル全体の書き込みに最適。
既存のファイルへの追記
既存のファイルにデータを追記するには、FileWriter
の第二引数に true
を渡します。
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try (FileWriter writer = new FileWriter("example.txt", true)) {
writer.write("This line is appended.\n");
} catch (IOException e) {
e.printStackTrace();
}
}
}
特徴:
- 簡単に追記が可能。
- 元の内容を保持しつつ新しいデータを追加できる。
例外処理について
ファイル操作では、IOException
が頻繁に発生します。そのため、適切な例外処理が重要です。
例外処理の例:
try (FileWriter writer = new FileWriter("example.txt")) {
writer.write("Some data");
} catch (IOException e) {
System.err.println("File writing failed: " + e.getMessage());
}
リソースの自動解放には try-with-resources
を使用することを推奨します。
各方法の性能比較
性能を比較すると、以下の傾向が見られます。
- FileWriter: 小規模な書き込みに最適。
- BufferedWriter: 大規模なデータに効率的。
- PrintWriter: フォーマットされた文字列の書き込みに便利。
- Files クラス: コードが簡潔でモダン。
用途に応じて最適な方法を選択してください。