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」のコンストラクタの引数に文字コードを指定します。
次の例では、文字コードに「UTF-8」を指定しています。
[文字コードを指定した場合の実装例]
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", "UTF-8")) {
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),"UTF-8")))) {
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) {
// ここにエラー処理
}
}
}
}
[実行後のファイル内容]
あいうえお
かきくけこ
さしすせそ
文字を追加
また、以下のように実装することUTF-8もできます。
[ファイルに追記する場合の実装例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) {
// ここにエラー処理
}
}
}
}