как скачать очень большие файлы в kotlin - PullRequest
0 голосов
/ 27 января 2020

Предисловие: Я Kotlin noob

Я хочу эффективно загружать очень большие файлы (2 ГБ +) в Kotlin (приложение CLI).

Также хотел бы быть в состоянии иметь тайм-ауты и даже индикаторы прогресса

Я нагуглил очевидные термины, но не могу найти хорошее решение, не требующее всевозможных внешних зависимостей.

Пока пытаюсь использовать okhttp3 но я не уверен, что он ориентирован на загрузку больших файлов, поскольку кажется (я могу ошибаться), что запрос идет не в потоковом режиме, а в памяти (из-за примеров на их сайте)

мой тривиальный код такой:

fun download(url: String, to: String) {
        val client = OkHttpClient()    
        val request = Request.Builder().url(url).build()
        val call = client.newCall(request)


        val r = call.execute() // Invokes the request immediately, and blocks until the response can be processed or is in error.
        val body = r.body 
        if (body != null) {
            val someHugeStringInMemory = body.string() // would want to stream this thing to a file and be able to cancel and be able to get progress
        }
    }
...