提问人:segoSambel 提问时间:9/15/2023 更新时间:9/15/2023 访问量:32
调用 deleteOnExit 后未删除临时文件
Temporary file not deleted after calling deleteOnExit
问:
这是我当前在 Android 上的缓存目录内创建一个临时文件的实现。但是,在我关闭应用程序后,应该删除此文件。然而,这个文件仍然存在于我的缓存目录中。顺便说一句,我的模拟器运行的是 Android 12。
fun uriToFile(context: Context, uri: Uri): File? {
val contentResolver: ContentResolver = context.contentResolver
val fileExtension = getFileExtension(context, uri)
val fileName = "file_${System.currentTimeMillis()}"
val directory = context.cacheDir
val destinationFile = File.createTempFile(fileName, ".$fileExtension", directory)
destinationFile.deleteOnExit()
try {
val inputStream: InputStream? = contentResolver.openInputStream(uri)
if (inputStream!=null) {
val outputStream = FileOutputStream(destinationFile)
val buffer = ByteArray(1024)
var bytesRead: Int
while (inputStream.read(buffer).also { bytesRead = it }!=-1) {
outputStream.write(buffer, 0, bytesRead)
}
outputStream.close()
inputStream.close()
return destinationFile
}
} catch (e: IOException) {
//
}
return null
}
private fun getFileExtension(context: Context, uri: Uri): String {
val contentResolver: ContentResolver = context.contentResolver
val mimeType = contentResolver.getType(uri)
return MimeTypeMap.getSingleton().getExtensionFromMimeType(mimeType)
?: "unknown"
}
我试过四处走动,但没有用。destinationFile.deleteOnExit()
答: 暂无答案
下一个:使用文件设置 img src
评论
deleteOnExit()