InputStream から行単位でファイルを読み出したい時
Java 8 では、BufferedReader#lines
が定義されているのでこれを利用する。
BufferedReader#lines
は、Stream
try (final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))) {
bufferedReader.lines().map(String::trim)
.forEach(System.out::println);
}
ごちゃごちゃと記述が必要だが、通常だとグローバル変数でやっていたり暗黙のうちに処理されている部分を手で書いているだけなのでたいしたもんだいではない。
文字コードは VM のデフォルト文字列を利用すれば記述を省略することが可能だが、グローバル変数に頼ったコーディングは後々身を滅ぼすことであろう。
見た感じ、InputStreamReader#close
を呼んでいる部分が無くて不安になるかもしれないが、BufferedReader#close
が呼んでいるので問題ない。
このあたり駆使していけば、Java 8 でも意外とスクリプト書きやすくなってくる。
Published: 2015-05-07(Thu) 23:24