Ktor:发送响应后删除临时文件

Ktor: delete temporary file after response is sent

我在 android 平板电脑上使用 ktor 库发送一个临时文件作为对请求的响应,但我找不到在发送后安全删除它的方法(或者发生了什么事错误)。

如何确保在不中断发送过程的情况下删除该文件?可能使用了一些我不知道的回调或方法。

更新:回复评论:

我的代码:

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() 行吗?

我认为我的主要 question/confusion(来自 java 世界)它是否 respondFile 是否是阻塞调用。如果是这样,只需在 finally 块上添加 file.delete 就可以了,否则我需要注册一些 onCompleted 回调。

您可以使用finally:发送文件后或出现错误时会调用

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()
}