生活随笔
收集整理的這篇文章主要介紹了
ktor下载文件流
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
suspend fun main() {
//騰訊網logo
val url1 = "https://mat1.gtimg.com/pingjs/ext2020/qqindex2018/dist/img/qq_logo_2x.png"
//百度logo
val url2="https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png"
HttpClient(CIO).use { httpClient ->
//用第一種方式下載圖片
httpClient.download(url1, File("./1.jpg").outputStream())
//用第二種方式下載圖片
val httpStatement: HttpStatement = httpClient.get(url2)
val fileOutputStream=File("./2.jpg").outputStream()
download(httpStatement, fileOutputStream)
}
}
//傳入url字符串進行下載
suspend fun HttpClient.download(url: String, fileOutputStream: FileOutputStream) = withContext(Dispatchers.IO) {
this@download.get<HttpStatement>(url).execute { httpResponse ->
val channel: ByteReadChannel = httpResponse.receive()
while (!channel.isClosedForRead) {
val packet = channel.readRemaining(DEFAULT_BUFFER_SIZE.toLong())
fileOutputStream.writePacket(packet)
}
}
}
//利用ktor client下載文件 能夠實現高度自定義的HttpStatement
suspend fun download(httpStatement: HttpStatement, fileOutputStream: FileOutputStream) = withContext(Dispatchers.IO) {
httpStatement.execute { httpResponse ->
val channel: ByteReadChannel = httpResponse.receive()
while (!channel.isClosedForRead) {
val packet = channel.readRemaining(DEFAULT_BUFFER_SIZE.toLong())
fileOutputStream.writePacket(packet)
}
}
}
總結
以上是生活随笔為你收集整理的ktor下载文件流的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。