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