kotlin 使用ktor进行流式下载

68bkxrlz  于 2022-11-16  发布在  Kotlin
关注(0)|答案(1)|浏览(193)

我写了这段代码来下载一个带有Ktor的文件:

val resp = httpClient.request {
    url("http://example.com/large_file.dat")
}
resp.bodyAsChannel().copyAndClose(File(cacheDir, "test.foo").writeChannel())

当我运行它的时候,大约10秒钟什么都没有发生,然后文件被写得相当快。这告诉我文件被下载到内存中,然后才被写到文件中。
我如何才能让它同时发生?
我尝试了 AndroidOkHttp 引擎。

gt0wga4j

gt0wga4j1#

根据Mark的评论,我将代码更改为:

httpClient.prepareRequest {
    url("http://example.com/large_file.dat")
}.execute { resp ->
    resp.bodyAsChannel().copyAndClose(File(cacheDir, "test.foo").writeChannel())
}

现在,数据已按预期进行流处理。

相关问题