(1) Javaでファイルへの書き込みする方法の基礎(追記・上書き、改行の方法等)
(1-1) STEP1:FileWriterクラスのインスタンス化
(1-2) STEP2:ファイルへの書き込み
(1-3) STEP3:クローズ処理
(2) サンプルプログラム
(1) Javaでファイルへの書き込みする方法の基礎(追記・上書き、改行の方法等)
Javaでファイル書き込みを行うには「FileWriter」クラスを使います。「FileWriter」は「1文字」単位で読み込んでいくため、「FileOutputStream」などの「1バイト」単位で読み込む方式と比較して、マルチバイト文字も読めるなどの利点があります。
(1-1) STEP1:FileWriterクラスのインスタンス化
まず初めに「FileWriter」クラスのインスタンス化を行います。コンストラクタの引数は以下の通りです。
第1引数 | 【必須】 「書き込みしたいテキストファイル」のパス |
第2引数 | 【省略可】 ファイルを「上書き」するか「追加」するかの選択。 ⇒trueを指定すると「追加」(元ファイルを残す) ⇒falseを指定すると「上書き」(元ファイルは消える) この引数は省略可能で、省略した場合は「false」扱いになる |
(構文)FileWriterインスタンス化
FileWriter [FileWriterのインスタンス名] = new FileWriter("[ファイルパス]\[ファイル名].txt",[true/false=上書き要否]);
try (FileWriter writer = new FileWriter(filepath, false);) { //テキストへの書き込み処理 } catch (IOException e) { //例外処理(パスが存在しないケースなど) System.out.print(e); }
(1-2) STEP2:ファイルへの書き込み
write(int) | int型を指定して、対応する文字を書き込みます。 例えば文字「A」のASCIIコードは「65」なのでwrite(65)とすると「A」が書き込まれます。 |
write(char[]) | char型の配列を指定して書き込み |
write(String) | String型を指定して書き込み |
//文字列や変数の書き込み writer.write("### current counter value : "+counter); //改行の書き込み writer.write("\r\n");
//(STEP1) FileWriterクラスのインスタンス化(try-with-recources内) try (FileWriter writer = new FileWriter(filepath, false);) { //(STEP2) 書き込み処理 //文字列や変数の書き込み writer.write("### current counter value : "+counter); //改行の書き込み writer.write("\r\n"); } catch (IOException e) { //例外処理(パスが存在しないケースなど) System.out.print(e); }
(1-3) STEP3:クローズ処理
writer.close();
//(STEP1) FileWriterクラスのインスタンス化(try-with-recources内) try (FileWriter writer = new FileWriter(filepath, false);) { //(STEP2) 書き込み処理 //文字列や変数の書き込み writer.write("### current counter value : "+counter); //改行の書き込み writer.write("\r\n"); //(STEP3) ファイルのクローズ writer.close(); } catch (IOException e) { //例外処理(パスが存在しないケースなど) System.out.print(e); }
(1-2) サンプルプログラム
上記の(STEP1)~(STEP3)に更にmain文等を加えて、実行可能にしたコードを掲載します。
(サンプルプログラム)
import java.io.FileWriter; import java.io.IOException; public class IT0225_WriteText { public static void main(String args[]) { //(1)書き込み対象のテキストファイルのパスをStringで定義 final String filepath = "/tmp/bbb.txt"; //(STEP1) FileWriterクラスのインスタンス化(try-with-recources内) // 第二引数はfalseなので「上書きモード」(「追記モード」ではない) try (FileWriter writer = new FileWriter(filepath, false);) { //(STEP2) 書き込み処理 //引数がString型のwrite writer.write("### Write String Sample"); //改行もできます writer.write("\r\n"); //引数がint型のwrite(65=Aの10進数のASCIIコード)⇒ 「A」が追記される writer.write(65); writer.write("\r\n"); //引数がchar型のwrite ⇒ 「ABC」が追記される char[] chars = new char[] {'A','B','C'}; writer.write(chars); writer.write("\r\n"); //(STEP3) ファイルのクローズ writer.close(); } catch (IOException e) { //例外処理(パスが存在しないケースなど) System.out.print(e); } } }
(図121)実行結果
ターミナルから生成したテキストファイルを読み込み、意図した書き込みがされているか?を確認。