Kotlinで大きな入力ストリームをファイルに書き込む 質問する

Kotlinで大きな入力ストリームをファイルに書き込む 質問する

REST Web サービスから大量のテキスト ストリームが返されるので、それを直接ファイルに書き込みたいと考えています。これを行う最も簡単な方法は何ですか?

私は、動作する次の関数拡張を作成しました。しかし、これを行うにはもっときれいな方法があるのではないかと思わずにはいられません。

注記: リソースでtryを使用してストリームとファイルを自動的に閉じたいと思っていました

fun File.copyInputStreamToFile(inputStream: InputStream) {
    val buffer = ByteArray(1024)

    inputStream.use { input ->
        this.outputStream().use { fileOut ->

            while (true) {
                val length = input.read(buffer)
                if (length <= 0)
                    break
                fileOut.write(buffer, 0, length)
            }
            fileOut.flush()
        }
    }
}

ベストアンサー1

関数を簡略化するには、copyTo関数:

fun File.copyInputStreamToFile(inputStream: InputStream) {
    this.outputStream().use { fileOut ->
        inputStream.copyTo(fileOut)
    }
}

おすすめ記事