Javaによるテキストファイルの読み込みについて
Javaでは、テキストファイルを読み込む方法がいくつか提供されています。本記事では、主要な方法とそれぞれの特徴について解説し、具体例を示します。
- FileReader クラスを使用する方法
- BufferedReader クラスを使用する方法
- Files クラスを使用する方法
- Scanner クラスを使用する方法
- try-with-resources を活用する方法
FileReader クラスを使用する方法
FileReader
は、文字ベースのテキストファイルを読み込むための基本的なクラスです。1文字ずつファイルを読み取ることができます。
import java.io.FileReader;
import java.io.IOException;
public class FileReaderExample {
public static void main(String[] args) {
try (FileReader reader = new FileReader("example.txt")) {
int character;
while ((character = reader.read()) != -1) {
System.out.print((char) character);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
この方法は簡単ですが、大きなファイルを扱う場合、効率が悪くなる可能性があります。
BufferedReader クラスを使用する方法
BufferedReader
は、テキストファイルを効率的に読み込むために使用されます。行単位での読み取りが可能で、パフォーマンスも優れています。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderExample {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
readLine
メソッドを使用することで、行単位でデータを処理できます。
Files クラスを使用する方法
java.nio.file.Files
クラスを使用すると、ファイルの内容を全てリストや文字列として読み取ることができます。
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
public class FilesExample {
public static void main(String[] args) {
try {
List<String> lines = Files.readAllLines(Paths.get("example.txt"));
for (String line : lines) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
readAllLines
メソッドは、すべての行を一度にメモリに読み込むため、大きなファイルでは注意が必要です。
Scanner クラスを使用する方法
Scanner
クラスは、テキストファイルをトークンとして読み取る場合に便利です。特定の区切り文字を指定して処理することも可能です。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(new File("example.txt"))) {
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
Scanner
は簡潔なコードを記述できるため、小規模なファイルに適しています。
try-with-resources を活用する方法
Java 7以降では、try-with-resources
構文を使用してリソース管理を自動化できます。これにより、リソースの明示的なクローズが不要になります。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class TryWithResourcesExample {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
この方法は、リソースリークを防ぐためのベストプラクティスとされています。
まとめ
Javaにはさまざまな方法でテキストファイルを読み込む手段が用意されています。それぞれの方法には適用範囲やメリット・デメリットがあるため、プロジェクトの要件に応じて適切なものを選択してください。