Streamをそもそもしっかり見てなかったので、そういうプログラムを書こうとしたら、失敗した。
Streamのcountで値を得て、それが目的の行を超過していないかを判別しようとしたんだけど、countは終端処理なせいで、
その次のgetで取得できない(Closed)とかいうポカをやらかした。
んで、それに気がついたもののいまいち思い浮かばなくて、ふとorElseってものを見つけてこれで。
とりあえず、Streamを勉強しないとなぁと思いました。
該当プログラム:
Streamのcountで値を得て、それが目的の行を超過していないかを判別しようとしたんだけど、countは終端処理なせいで、
その次のgetで取得できない(Closed)とかいうポカをやらかした。
んで、それに気がついたもののいまいち思い浮かばなくて、ふとorElseってものを見つけてこれで。
とりあえず、Streamを勉強しないとなぁと思いました。
該当プログラム:
String line_result = null;
Path path = Paths.get(args[0]);
int line_number = Integer.parseInt(args[1]);
try (Stream<String> lines = Files.lines(path)) {
line_result = lines.skip(line_number).findFirst().orElse(null);
if (line_result == null) System.err.println("out of lines.");
else System.out.println(line_result);
}