【发布时间】:2021-11-07 15:25:36
【问题描述】:
我正在发送一个临时文件,作为对在 Android 平板电脑上使用 ktor 库的请求的响应,但我找不到在发送后安全删除它的方法(或出现问题)。
如何确保在不中断发送过程的情况下删除此文件?也许使用了一些我不知道的回调或方法。
更新:回答 cmets:
我的代码:
try {
call.response.headers.append("entity-count", entityCount)
call.response.headers.append("sync-length", lenght)
call.respondFile(FileContent(file) // need to delete this file after sent OR failed
} catch (e: Exception) {
Log.e(TAG, e)
}
我应该在 finally 块中添加一个 file.delete() 行吗?
我认为我的主要问题/困惑(来自 java 世界)是否 respondFile 是阻塞调用。如果是这样,只需在 finally 块上添加 file.delete 就可以了,否则我需要注册某种 onCompleted 回调。
【问题讨论】:
-
“不中断发送过程”是什么意思?您使用协程发送数据:当这个挂起函数完成处理返回控制并进入下一行(或抛出错误)时,这意味着您可以清除您的资源。
-
如果您使用
ApplicationCall.respondFile,则文件将在发送过程结束时关闭。您能否使用代码 sn-p 更新您的问题? -
@PhilipDukhov,刚刚更新了我的问题