Javaによるテキストファイルの読み込みについて

Javaによるテキストファイルの読み込みについて

Javaでは、テキストファイルを読み込む方法がいくつか提供されています。本記事では、主要な方法とそれぞれの特徴について解説し、具体例を示します。

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にはさまざまな方法でテキストファイルを読み込む手段が用意されています。それぞれの方法には適用範囲やメリット・デメリットがあるため、プロジェクトの要件に応じて適切なものを選択してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です