「BufferedReaderクラスでファイルを1行ずつ読み込む方法」
Javaにはファイルを読み込むための「BufferedReaderクラス」があります。
BufferedReaderとは
BufferedReaderクラスとは、テキストファイルを読み込むためのクラス。
BufferedReaderクラスでは、テキストファイルを1行ずつ読み込むreadlineメソッドが用意されている。
テキストファイルを読み込むクラスにはFileReaderクラスもあるが、こっちはテキストを1文字ずつ読み込むため効率が悪い場合がある。
そのため、テキストファイルの読み込みはBufferedReaderクラスを使うようにするのがよい!
BufferedReaderの使い方
readLineメソッドは指定したテキストファイルを1行ずつ読み込み、String型の戻り値として返す。
ファイルの終わりに到達した場合は「null」を返す。
そのため、ファイルの終わりまで読み込む場合には、while文でnullが返されるまでループさせる。
コード例
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 = new File("c:SampleTest.txt");
// ファイルが存在しない場合に例外が発生するので確認する
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();
}
}
}
//実行結果
SAMURAI
ENGINEER
文字コードを変換して読み込む方法
BufferedReaderクラスで読み込む前に処理を加えることで、別の文字コードに変換することが可能。
先ほどのサンプルコードでは、FileReaderクラスのオブジェクトを指定してBufferedReaderクラスで読み込みを行った。
別の文字コードに変換して読み込む場合は、「InputStreamReader」及び「FileInputStream」クラスを拡張したオブジェクトを指定してBufferedReaderクラスで読み込む。
参考サイト