Javaでテキストファイルを読み込む方法

こんにちは、さるまりんです。

Javaでのファイルの読み込みです。

InputStreamとかBufferedReaderとか色々勉強したのですが、java.nioパッケージにFilesPathsと便利なものがあるんですね。(今更?)

今回使う機会があったのでそれをメモしておきます。

テキストファイルを一気にStringの配列に読み込んでみます。

veggies.txtには野菜の名前が入ってます。
これを読み込んで、1行ずつ出力するプログラムです。

// 読み込むファイルはsalumarineのホームディレクトリにあるveggies.txtです
Path path = Paths.get("/home/salumarine/veggies.txt");
// 全ての行を配列に読み込み
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
// 1行ずつ出力
lines.forEach(line -> System.out.println(line));

実行した出力はこうなります。

artichoke
asparagus
bell pepper
broccoli
cabbage
carrot
cauliflower
celery
cucumber
eggplant
garlic
lettuce
mushrooms
onion
peas
potato
pumpkin
spinach
string beans
yam
zucchini

ちなみに1行ずつ出力する部分は↓でも大丈夫です。

lines.forEach(System.out::println);

1行ずつ読み込んで処理したい時はこうです。

try (BufferedReader br = Files.newBufferedReader(Paths.get("/home/salumarine/veggies.txt"))) {
    String line = null;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
}

BufferedReaderが出てきました。
FilesクラスのnewBufferedReaderメソッドにPathのオブジェクトを渡して取得しています。
そのBufferedReaderから1行ずつ読み込んで出力しています。

結果は一括で読み込んだ時と同じです。

同じことをするにもいろんな方法がありますね。
知らないこといっぱいです。勉強しなきゃ。

読んでくださってありがとうございます。

それではまた!