Javaでファイルの書き込みをする方法
ファイルに書き込む(上書き)
ファイルに書き込むには、書き込みに特化したクラスである「PrintWriter」を使うことで簡単にファイルに書き込むことができます。
次はPrintWriterの使用例です。「println」メソッドを使うことで自動的に改行されます。改行してほくないときは「print」メソッドを使うことで改行せずにファイルに書き込みを行います。
[PrintWriterの使用例]
import java.io.FileNotFoundException; import java.io.PrintWriter; public class PrintWriterSample { public static void main(String[] args) { try (PrintWriter pw = new PrintWriter("C:\\work\\test.txt")) { pw.println("あいうえお"); pw.println("かきくけこ"); pw.println("さしすせそ"); pw.flush(); System.out.println("ファイル書き込み完了"); } catch (FileNotFoundException e) { e.printStackTrace(); } } }
[出力されたファイル(test.txt)内容]
あいうえお かきくけこ さしすせそ
ファイル操作を行う場合は、処理の最後に必ず「close」メソッドを呼ぶ必要があります。今回の例では、close漏れを防ぐためにも「try-with-resources」(※try -with-resources文は、処理の終わりで各リソースを確実に閉じてくれる)を使用しています。

スポンサーリンク
文字コードを指定してファイルに書き込む
文字コードを指定してファイルに書き込む場合は「PrintWriter」のコンストラクタの引数に文字コードを指定します。
次の例では、文字コードに「Shift-JIS」を指定しています。
[文字コードを指定した場合の例]
import java.io.IOException; import java.io.PrintWriter; import java.nio.charset.Charset; public class PrintWriterCharsetSample { public static void main(String[] args) { try (PrintWriter pw = new PrintWriter("C:\\work\\test.txt", Charset.forName("Shift-JIS"))) { pw.println("あいうえお"); pw.println("かきくけこ"); pw.println("さしすせそ"); pw.flush(); System.out.println("ファイル書き込み完了"); } catch (IOException e) { e.printStackTrace(); } } }
ファイルに追記する
PrintWriterクラスで上書きではなく追記にする場合は、FileWriterクラスを使います。FileWriterクラスのオブジェクト(インスタンス)を生成すると、同時に「ファイルを開く」という処理が行われます。(ファイルが存在しない場合は、新しくファイルが作成される)
そして、ファイルに追記する場合は「FileWriter」のコンストラクタの第2引数に「true」にします。
次の例では、FileWriterクラスでファイルを開き、PrintWriterクラスでファイルの内容に追記します。
[実行前のファイル内容]
あいうえお かきくけこ さしすせそ
[ファイル追記の例]
import java.io.IOException; import java.io.PrintWriter; public class PrintWriterAppendSample { public static void main(String[] args) { try { FileWriter file = new FileWriter("C:\\work\\test.txt", true); try (PrintWriter pw = new PrintWriter(file)) { pw.println("追記文字"); pw.flush(); System.out.println("ファイルに追記完了"); } } catch (IOException e) { e.printStackTrace(); } } }
[実行後のファイル内容]
あいうえお かきくけこ さしすせそ 追記文字