【问题标题】:I can't delete the folder's content from path我无法从路径中删除文件夹的内容
【发布时间】:2020-11-23 08:40:04
【问题描述】:

我目前正在从我的 FileExplorer 获取此路径

val path = "content://com.android.externalstorage.documents/tree/primary:Download"

我正在尝试删除此位置的内容:

     val fileFolder = File(path)
     deleteFolderContent(fileFolder)

     private fun deleteFolderContent(fileFolder: File) {
        val files = fileFolder.listFiles()
        if (files.isNullOrEmpty()) {
            return
        } else {
            for (file in files) {
                file.delete()
            }
        }
    }

files 始终为空,我无法删除内容。我究竟做错了什么?谁能帮我?谢谢。

更新:

为了获得这个“路径”,我这样做了:

val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
startActivityForResult(intent, SELECT_FOLDER_REQUEST_CODE)

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode == SELECT_FOLDER_REQUEST_CODE && resultCode == RESULT_OK) {
        val uriTree = data?.data 
     }
}

【问题讨论】:

  • 您威胁将内容方案作为文件系统路径。那是怎么回事。
  • 您使用了哪个操作来获取该 uri/content 方案?
  • @blackapps 我已经用获取问题的方法更新了问题。
  • 您获得了一个 SAF uri。你可以试试。 DocumentFile.deleteFile() 或 DocumentFile.deleteDirectory() 中的任何一个。
  • 此外,您不会删除内容,而是仅在目录为空时才删除目录本身...

标签: android path android-storage


【解决方案1】:

您无法以File 的身份访问content 目录(即使URI 指向本地存储)。查看Providers 和ContentResolverHERE 你有一些基础知识,对于文件有一个特殊的:FileProvider。但是对于您的情况,ContentResolver 可能最适合您的需求,方法是:

context.contentResolver.delete(uriToDelete, null, null)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 2022-01-12
    相关资源
    最近更新 更多