我尝试删除应用程序的缓存子文件夹(甚至该高速缓存文件夹本身),但没有任何React。
cacheFolder = File(this.cacheDir, "/download")
deleteFolder(cacheFolder)
private fun deleteFolder(fileOrDirectory : File){
fileOrDirectory.deleteRecursively()
}
这句俏皮话也不管用
this.cacheDir.deleteRecursively()
有什么想法吗?
3条答案
按热度按时间w8biq8rn1#
最好使用服务删除cacheFiles
我就是这样做的
nukf8bse2#
不幸的是,
File.deleteRecursively()
函数并没有告诉你删除失败的原因,它只是返回true或false来显示删除是否成功,如果返回false,则说明目录树可能被部分删除了。与其使用旧的
java.io.File
类(该函数是其Kotlin扩展),不如使用“较新的”java.nio
实用程序类,因为这些类将抛出一个IOException来描述删除失败的原因。不幸的是,Kotlin目前没有提供使用java.nio
的deleteRecursively()
函数,它只提供了一个Path
类上的非递归deleteExisting()
函数。您可以编写自己Path.deleteRecursively()
扩展函数与Path.deleteExisting()
一起使用:然后,您可以像这样使用它:
并且如果它无法删除整个树,您将看到一个堆栈跟踪,其中包含一个异常和一条描述性消息。
**更新:**即将发布的Kotlin1.8.0将在其标准库中包含一个同名的实验函数。
a6b3iqyw3#
谢谢你的支持。现在我让它工作了。问题是DownloadManager
request.setDestinationInExternalFilesDir(this, cacheFolder.toString(), zipFileName)
线完全打乱了路径。现在我有
一切正常甚至
确实如此。
下一步是实现
java.nio
。谢谢Klitos更新你的帖子。我不知道如何使用它。