LoginSignup
0
0

More than 3 years have passed since last update.

【Java】FileReaderクラスとBufferedReaderクラスの使い方

Posted at

プログラミング勉強日記

2020年11月16日
FileReaderクラスとBufferedReaderクラスの使い方を改めてまとめておく。

FileReaderクラスとは

 テキストファイルを読み込むためのAPIで、テキストファイルの内容を元にした処理などを行うために使う。ファイルの文字は、データを文字単位で読み書きできる文字のストリームで読み込まれる。FileReaderクラスは文字を読み込むメソッドとしては、1文字ずつ読み込むreadメソッドしか用意がないので、データをバイト単位で読み書きできるバイトのストリームで読みたい場合はFileInputStreamクラスを使用する。

readメソッドで1文字ずつ読み込む
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Main {

    public static void main(String[] args) {
        try {
            // Fileクラスのコンストラクタの引数にファイルのパスを指定
            File file = new File("text.txt");

            // ファイルが存在しない場合の例外処理
            // existsメソッドはファイルが存在する場合にはtrue、存在しない場合にはfalseを返す
            if (!file.exists()) {
                System.out.print("ファイルが存在しません");
                return;
            }

            // FileReaderクラスとreadメソッドを使って1文字ずつ読み込み表示する
            FileReader fileReader = new FileReader(file);
            int data;
            // ファイルの終わりになるまで処理を繰り返す
            while ((data = fileReader.read()) != -1) {
                // 読み込んだ文字をchar型にキャストして文字を表示させる 
                System.out.print((char) data);
            }

            // 最後にファイルを閉じてリソースを開放する
            fileReader.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

BufferReaderクラスとは

 FileReaderクラス同様にテキストファイルを読み込むクラスで、FileReaderクラスとは用意されているメソッドが違う。BufferReaderクラスでは1行ずつ読み込むreadlineメソッドが用意されている。
 FileReaderクラスでは1文字ずつ読み込んでいるが、文字数が多い場合に効率が悪くなることがあるので、一定量メモリを決めて、たまったらOSに読み込み命令を出すようにする。これをバッファリングという。

readlineメソッドで1行ずつ読み込む
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Main {

    public static void main(String[] args) {
        try {
            // Fileクラスのコンストラクタの引数にファイルのパスを指定
            File file = new File("c:SampleTest.txt");

            // ファイルが存在しない場合の例外処理
            // existsメソッドはファイルが存在する場合にはtrue、存在しない場合にはfalseを返す
            if (!file.exists()) {
                System.out.print("ファイルが存在しません");
                return;
            }

            // BufferedReaderクラスのreadLineメソッドを使って1行ずつ読み込み表示する
            FileReader fileReader = new FileReader(file);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            String data;
            // ファイルの終わりになるまで処理を繰り返す
            while ((data = bufferedReader.readLine()) != null) {
                System.out.println(data);
            }

            // 最後にファイルを閉じてリソースを開放する
            bufferedReader.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

参考文献

クラスBufferedReader
クラスFileReader
【Java】FileReader、BufferedReaderでテキストファイルを読み込む

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0