簡體   English   中英

超時下載多個文件

[英]Download multiple files with timeout

我正在開發一個應用程序,其中自定義 fonts 在應用程序啟動時下載(根據客戶要求,我們必須在運行時執行此操作)。 如果下載時間超過一定限制(例如 5 秒),我想放棄下載並回退到默認值 fonts。 如何使用 Kotlin 實現此目的?

我的下載代碼:

fun download(url: String, path: String) {
    URL(url).openStream().use { input ->
        FileOutputStream(File(path)).use { output ->
            input.copyTo(output)
        }
    }
}

我的並行下載代碼( AppFont是自定義數據 model 和urlpath字段):

    appFonts.map {
        async { download(it.url, it.path) }
    }.awaitAll()

我嘗試使用withTimeoutwithTimeoutOrNull但在這種情況下它們似乎不起作用......

太感謝了!

我想我可能已經通過設置超時並捕獲任何超時異常找到了一種方法:

fun download(url: String, path: String, timeout: Int? = null) {
    URL(url).openConnection().apply {
        timeout?.let {
            connectTimeout = it
            readTimeout = it
        }
    }.getInputStream().use { input ->
        FileOutputStream(File(path)).use { output ->
            input.copyTo(output)
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM