プログラミング勉強日記
2020年11月16日
FileReaderクラスとBufferedReaderクラスの使い方を改めてまとめておく。
FileReaderクラスとは
テキストファイルを読み込むためのAPIで、テキストファイルの内容を元にした処理などを行うために使う。ファイルの文字は、データを文字単位で読み書きできる文字のストリームで読み込まれる。FileReaderクラスは文字を読み込むメソッドとしては、1文字ずつ読み込むreadメソッドしか用意がないので、データをバイト単位で読み書きできるバイトのストリームで読みたい場合はFileInputStreamクラスを使用する。
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に読み込み命令を出すようにする。これをバッファリングという。
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でテキストファイルを読み込む