【忘備録】FileWriter/FileReader

FileWriter

FileReader

import java.io.*;

public class Main {

    public static void main(String[] args) {
        
        // FileReaderを使う場合は、try-catchか、throwsを使用(errorが出るから)
        try {
        
            // FileReaderクラスをインスタンス化
            FileReader fr = new FileReader("data.txt");
            System.out.println("すべてのデータを読んで表示します。");

            // read()メソッドは、1文字ずつ読む。戻り値がint型
            int input = fr.read();
             
            // これ以上読めるデータがない場合、-1を返すので否定し、trueで繰り返す 
            while (input != -1) {
                // int型をchar型にキャストする
                char c = (char)input;
                System.out.print(c);
                
                // これ書かないと無限に出力し続ける
                input = fr.read();
            }
            // 読み取りを閉じる
            fr.close();

        } catch (IOException e) {
            System.out.println("エラーが発生しました。");
        }

    }
}

FileReaderは、複数の文字をまとめて読み取ってString型で返すメソッドはない。1文字ずつ読み取るのが基本。

1文字つず読むならchar型のままで返してくれたらいいが、最後まで読み終わった時に、これ以上データがないと判断する方法がなく、苦肉の策としてint型にして、データがない場合は-1を返すという方法をとったらしい。