チュートリアル
Java でテキストファイルにデータを書き込む方法について説明します。
テキストファイルを書き込む方法は数多くあります。
また、ファイル書き込みはディスク容量がない場合やファイルパスが存在しないなど例外が発生する点を考慮する必要があります。
メソッド概要
引数で渡されたファイルパス、値をファイルに書き込みます。
以下3種の書き込みのサンプルコードを紹介します。
- FileWriterを使用した例
- PrintWriterを使用した例
- FileWriterを使用した例
サンプルコード
FileWriterを使用した例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
package sample.code; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class FileAction01 { /** * ファイル書き込み * @param filePath ファイルパス * @param str ファイル書き込み文字列 * @param 追記モード true:追記 false:上書き * @return true:書き込み成功 false:書き込み失敗 */ public static boolean writeFile1(String filePath, String str, boolean addMode) { FileWriter fw = null; try { fw = new FileWriter(filePath, addMode); // ファイル書き込み fw.write(str); fw.write("\n"); // 改行を入れる場合 fw.flush(); return true; } catch (IOException e) { e.printStackTrace(); return false; } finally { try { if (fw != null) { fw.close(); } } catch (IOException e) { e.printStackTrace(); } } } } |
PrintWriterを使用した例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
package sample.code; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class FileAction01 { /** * ファイル書き込み * @param filePath ファイルパス * @param str ファイル書き込み文字列 * @param 追記モード true:追記 false:上書き * @return true:書き込み成功 false:書き込み失敗 */ public static boolean writeFile2(String filePath, String str, boolean addMode) { PrintWriter pw = null; FileWriter fw = null; try { fw = new FileWriter(filePath, addMode); pw = new PrintWriter(fw); pw.print(str); pw.println(""); // 改行を入れる場合 pw.flush(); return true; } catch (IOException e) { e.printStackTrace(); return false; } finally { try { if (pw != null) { pw.close(); } if (fw != null) { fw.close(); } } catch (IOException e) { e.printStackTrace(); } } } } |
BufferedWriterを使用した例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
package sample.code; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class FileAction01 { /** * ファイル書き込み * @param filePath ファイルパス * @param str ファイル書き込み文字列 * @param 追記モード true:追記 false:上書き * @return true:書き込み成功 false:書き込み失敗 */ public static boolean writeFile3(String filePath, String str, boolean addMode) { BufferedWriter bw = null; FileWriter fw = null; try { fw = new FileWriter(filePath, addMode); bw = new BufferedWriter(fw); bw.write(str); bw.newLine(); // 改行を入れる場合 bw.flush(); return true; } catch (IOException e) { e.printStackTrace(); return false; } finally { try { if (bw != null) { bw.close(); } if (fw != null) { fw.close(); } } catch (IOException e) { e.printStackTrace(); } } } } |
テストコード(JUnit)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
package sample.test; import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; import sample.code.FileAction01; class FileActionTest01 { @Test void test01() { assertTrue(FileAction01.writeFile1("C:\\work\\test1.txt", "ファイル書き込みテスト1", false)); } @Test void test02() { assertTrue(FileAction01.writeFile2("C:\\work\\test2.txt", "ファイル書き込みテスト2", false)); } @Test void test03() { assertTrue(FileAction01.writeFile3("C:\\work\\test3.txt", "ファイル書き込みテスト3", false)); } @Test void test04() { assertTrue(FileAction01.writeFile1("C:\\work\\test1.txt", "ファイル書き込み(追記)テスト1", true)); } @Test void test05() { assertTrue(FileAction01.writeFile2("C:\\work\\test2.txt", "ファイル書き込み(追記)テスト2", true)); } @Test void test06() { assertTrue(FileAction01.writeFile3("C:\\work\\test3.txt", "ファイル書き込み(追記)テスト3", true)); } } |