Предисловие: Я 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
}
}