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(); } catch (FileNotFoundException e) { // ここにエラー処理 } } }
[出力されたファイル(test.txt)内容]
あいうえお かきくけこ さしすせそ
ファイル操作を行う場合は、処理の最後に必ず「close」メソッドを呼ぶ必要があります。今回の例では、close漏れを防ぐためにも「try-with-resources」(※try -with-resources文は、処理の終わりで各リソースを確実に閉じてくれる)を使用しています。

スポンサーリンク
文字コードを指定してファイルに書き込む
文字コードを指定してファイルに書き込む場合は「PrintWriter」のコンストラクタの引数に文字コードを指定します。
次の例では、文字コードに「Shift-JIS」を指定しています。
[文字コードを指定した場合の実装例]
import java.io.IOException; import java.io.PrintWriter; public class PrintWriterCharsetSample { public static void main(String[] args) { try (PrintWriter pw = new PrintWriter("C:\\work\\test.txt", "Shift-JIS")) { pw.println("あいうえお"); pw.println("かきくけこ"); pw.println("さしすせそ"); pw.flush(); } catch (IOException e) { // ここにエラー処理 } } }
また、以下のように実装することもできます。
[文字コードを指定した場合の実装例2]
package course26; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; public class PrintWriterCharsetSample { public static void main(String[] args) { File file = new File("C:\\work\\test.txt"); try(PrintWriter pw = new PrintWriter(new BufferedWriter (new OutputStreamWriter(new FileOutputStream(file),"Shift-JIS")))) { pw.println("あいうえお"); pw.println("かきくけこ"); pw.println("さしすせそ"); pw.flush(); } catch (IOException e) { // ここにエラー処理 } } }
ファイルに追記する
ファイルに追記する場合は、FileWriterクラスの引数に「true」を指定すれば、内容を追記して書き込むことができます。
FileWriter fileWriter= new FileWriter("ファイル名", true);
もしくは
File file = new File("ファイル名");
FileWriter fileWriter= new FileWriter(file , true);
下記は、FileWriterクラスを使用した実装例です。
[実行前のファイル内容]
あいうえお かきくけこ さしすせそ
[ファイルに追記する場合の実装例]
import java.io.File; import java.io.FileWriter; import java.io.IOException; public class PrintWriterAppendSample { public static void main(String[] args) { File file = new File("C:\\work\\test.txt"); if (file.exists()) { try(FileWriter fw = new FileWriter(file, true)) { // 追記する文字 fw.write("文字を追加"); // 改行コード fw.write(System.getProperty("line.separator")); } catch (IOException e) { // ここにエラー処理 } } } }
[実行後のファイル内容]
あいうえお かきくけこ さしすせそ 文字を追加
また、以下のように実装することもできます。
[ファイルに追記する場合の実装例2]
import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class PrintWriterAppendSample { public static void main(String[] args) { File file = new File("C:\\work\\test.txt"); if (file.exists()) { try(PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file,true)))) { // 追記する文字 pw.println("文字を追加"); pw.flush(); } catch (IOException e) { // ここにエラー処理 } } } }