(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)実行結果
ターミナルから生成したテキストファイルを読み込み、意図した書き込みがされているか?を確認。
