ファイル操作: 読み書き
Reader/Writer でテキスト、Stream でバイナリ。
Reader
テキスト読み込み。
Writer
テキスト書き込み。
Stream
バイナリ入出力。
ファイル操作
import java.io.*;
// ファイル読み込みtry (BufferedReader reader = new BufferedReader( new FileReader("input.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); }}
// ファイル書き込みtry (BufferedWriter writer = new BufferedWriter( new FileWriter("output.txt"))) { writer.write("Hello World"); writer.newLine(); writer.write("Second line");}
// 追記モードtry (FileWriter fw = new FileWriter("log.txt", true)) { fw.write("Appended text\n");}実行結果
Hello World\nSecond line
Bad
// ❌ Bad: リソースを閉じ忘れFileReader reader = new FileReader("file.txt");// ... 使用// reader.close() を忘れた!Good
// ✅ Good: try-with-resourcestry (FileReader reader = new FileReader("f")) { // ...} // 自動で closeパターン
// Scanner でファイル読み込みtry (Scanner scanner = new Scanner(new File("data.txt"))) { while (scanner.hasNextLine()) { String line = scanner.nextLine(); System.out.println(line); }}
// PrintWriter で書き込みtry (PrintWriter writer = new PrintWriter("output.txt")) { writer.println("Line 1"); writer.printf("Number: %d%n", 42);}
// バイナリファイルtry (DataOutputStream dos = new DataOutputStream( new FileOutputStream("data.bin"))) { dos.writeInt(42); dos.writeDouble(3.14); dos.writeUTF("Hello");}
// オブジェクトのシリアライズtry (ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream("object.bin"))) { oos.writeObject(myObject);}
// Files (java.nio) - より簡潔List<String> lines = Files.readAllLines(Path.of("file.txt"));Files.write(Path.of("out.txt"), lines); Tip: 新規開発では Files (NIO) を使う。
合格ライン
ファイルを読み書きできる
try-with-resources を使っている
参考リンク
演習課題
課題1: ファイル読み込み
BufferedReader でテキストファイルを読み込んでください。
課題2: ファイル書き込み
try-with-resources でファイルに書き込んでください。