こんにちは、さるまりんです。
Javaでのファイルの読み込みです。
InputStream
とかBufferedReader
とか色々勉強したのですが、java.nio
パッケージにFiles
やPaths
と便利なものがあるんですね。(今更?)
今回使う機会があったのでそれをメモしておきます。
テキストファイルを一気に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行ずつ読み込んで出力しています。
結果は一括で読み込んだ時と同じです。
同じことをするにもいろんな方法がありますね。
知らないこといっぱいです。勉強しなきゃ。
読んでくださってありがとうございます。
それではまた!