Javaによるテキストファイルの書き込み

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 クラス: コードが簡潔でモダン。

用途に応じて最適な方法を選択してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です