以下の内容はhttps://blog.beatdjam.com/entry/2018/08/09/221153より取得しました。


【Java/Kotlin】BufferedReaderの今風な書き方を調べてみた

Javaで書かれたBufferedReaderの処理をKotlin化する中で、
イマドキのJavaでの扱い方と、Kotlinの場合どう書くかを調べてみました。

サンプルはすべてsomeStream という入力を連結する場合の例です。

いにしえの書き方(Java)

BufferedReaderで入力が取れなくなるまでループする。

StringBuilder sb = new StringBuilder();
String line;
BufferedReader br = new BufferedReader(new InputStreamReader(someStream, "UTF-8"));
while ( (line = br.readLine()) != null ) {
    sb.append(line);
}
br.close();
String result = sb.toString();

いまふうの書き方(Java)

Java 8から増えたBufferedReader.lines()でStreamとして取り出し、
Collectors.joining()で1つのStringにつなげる。
BufferedReaderはtry-with-resource文を使ってあげることで自動でcloseしてくれます。
いにしえの書き方よりだいぶシュッと書けます。

String result;
try (BufferedReader br 
    = new BufferedReader(new InputStreamReader(someStream, StandardCharsets.UTF_8))
) {
    result = br.lines().collect(Collectors.joining());
}

Kotlinで書くと…?

KotlinではInputStream.buferedReader()が生えているのでシュシュッと書けます。
BufferedReaderはcloseableなのでuseを使ってあげると自動でcloseしてくれます。

val result = someStream.bufferedReader().use { it.readText() }

参考:
java - Best way to use BufferedReader in Kotlin - Stack Overflow
bufferedReader - Kotlin Programming Language
use - Kotlin Programming Language
BufferedReader (Java Platform SE 8)




以上の内容はhttps://blog.beatdjam.com/entry/2018/08/09/221153より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14