ファイルの読み書き

Java の入出力とストリーム

Alex Liu

Software Development Engineer

キャスティング

  • 基本データ型の相互変換

  • 拡大変換(小さい型 → 大きい型)は自動

    • byte -> short -> char -> int -> long -> float -> double
// 拡大変換は自動
byte myByte = 8;
int myInt = myByte;
  • 縮小変換(大きい型 → 小さい型)は手動
// 縮小変換は手動
double myDouble = 3.14;
int myInt = (int) myDouble; // (int) に注目
Java の入出力とストリーム

ファイル読み取りでの特定のキャストを理解する

  • int から char へのキャスト: char data = (char) 123;
// 文字 'a' の Unicode 値
int data = 97;
// `int` のまま出力
System.out.print(data);
// `int` を `char` にキャストして出力
System.out.print((char)data);
97
a
1 https://www.ascii-code.com/
Java の入出力とストリーム

FileReader でファイルから読む

  • ファイル読み取りのために FileReader をインポート
import java.io.FileReader;
  • 文字ごとに読み取り・出力し、最後にクローズ
FileReader fr = new FileReader("example.txt");
int data = fr.read();
// 各文字を読み取り表示
while (data != -1) {
    System.out.print((char) data);
    data = fr.read();
}
fr.close(); // リソース解放のためにクローズ
Java の入出力とストリーム

BufferedReader で効率的に読む

  • BufferedReader - import java.io.BufferedReader;
    • テキストを行単位で読む
    • 大きなファイルで高効率
// BufferedReader オブジェクトを作成
BufferedReader br = new BufferedReader(new FileReader("example.txt"));
String line;
// .readLine() で行ごとに読む
while ((line = br.readLine())!= null){
  System.out.println(line);
}
br.close();
Java の入出力とストリーム

FileWriter でデータを書き込む

  • FileWriter:
    • 既存内容をデフォルトで上書き。データ損失に注意!
  • FileWriter をインポート
import java.io.FileWriter;


// 新しい `FileWriter` オブジェクトを作成 FileWriter fw = new FileWriter("example.txt"); // `.write()` でファイルに書き込む fw.write("Overwriting the file."); fw.close()
Java の入出力とストリーム

FileWriter で追記する

  • FileWriter
    • 追記モード(append)にすれば既存内容を上書きせずに追記可能

$$

// 追記モードで初期化
FileWriter fw = new FileWriter("example.txt", true);
// ファイルに追記
fw.write("Appending data.");
fw.close()
Java の入出力とストリーム

BufferedWriter で効率的に書く

  • BufferedWriter - import java.io.BufferedWriter;
    • 大きな塊で書いて効率化
    • 書き込み回数を削減
// BufferedWriter オブジェクトを作成
BufferedWriter bw = new BufferedWriter(new FileWriter("example.txt"));
bw.write("Writing data");

// 改行を追加する .newLine()
bw.newLine(); 
bw.close();
Java の入出力とストリーム

Let's practice!

Java の入出力とストリーム

Preparing Video For Download...