Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法删除SD卡上的文件_Java_Android_Delete File_Android Sdcard - Fatal编程技术网

Java 无法删除SD卡上的文件

Java 无法删除SD卡上的文件,java,android,delete-file,android-sdcard,Java,Android,Delete File,Android Sdcard,我正试图删除SD卡上的一些文件,但我没有主意了 我尝试了File.delete()方法,然后我又尝试了File.getCanonicalFile().delete() 还有更多。。 我的应用程序只能删除设备存储上的文件。 我已获得清单文件中定义的权限,如下所示 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="and

我正试图删除SD卡上的一些文件,但我没有主意了

我尝试了
File.delete()
方法,然后我又尝试了
File.getCanonicalFile().delete()
还有更多。。 我的应用程序只能删除设备存储上的文件。 我已获得清单文件中定义的权限,如下所示

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我使用以下方法来删除文件,但正如我前面提到的,我使用了堆栈溢出和其他方法中的大量解决方案

protected boolean delete(Context context) throws Exception {
        boolean delete = false;
        File file = new File(Environment.getExternalStorageDirectory().getPath() + getName());
        if (file.exists()) {
            delete = file.delete();
            if (!delete) {
                delete = file.getCanonicalFile().delete();
            }
            if (!delete) {
                String deleteCmd = "rm -r " + file.getAbsolutePath();
                Runtime runtime = Runtime.getRuntime();
                runtime.exec(deleteCmd);
            }
        }
        return delete;
    }
可能是因为我要求
读取外部存储
写入外部存储
权限,但在代码中,我只是获得了
读取外部存储
的许可,而另一个被Android忽略了(在我接受第一个选项后,它不会显示权限
WRITE_EXTERNAL_STORAGE
带有允许拒绝选项的弹出窗口)。这不是因为它们在android中具有相同的权限级别吗


可能有什么问题?

如果要从SD卡中删除文件,可以使用以下代码:

File file = new File("/sdcard/myfile.txt");
boolean deleted = file.delete(); 
File file = new File(selectedFilePath);
boolean deleted = file.delete();

如果要从SD卡中删除文件,可以使用以下代码:

File file = new File("/sdcard/myfile.txt");
boolean deleted = file.delete(); 
File file = new File(selectedFilePath);
boolean deleted = file.delete();
其中selectedFilePath是要删除的文件的路径

例如:selectedFilePath= /sdcard/YourDirectory/TestFile.mp3

此外,如果您使用的是>1.6 SDK,则必须授予权限

uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
在AndroidManifest.xml文件中


希望这可以帮助您

是的,在现代Android版本上,您不能再使用File类从SD卡中删除文件

改用存储访问框架


请查看
意图。打开文档文件
打开文档树

感谢您抽出时间回答我的问题。我很遗憾地告诉您,我已经多次使用此方法,但它可能会起作用,但不会起作用。感谢您抽出时间回答我的问题。很抱歉,我的电脑中有类似的代码问题,但它不起作用。我检查了路径,有时甚至对其进行了硬编码。也不起作用!我正在使用一个类在设备存储和SD卡之间切换,前面的代码只是我代码的一个示例,唯一更改路径和路径返回的文件名的是:“/storage/6364-3136/…”在代码中执行adb命令的结果是:“无法运行程序“adb”:错误=13,权限被拒绝”@pskink我使用了组合文件(路径)、文件(路径、文件名)仍然没有删除!文件在可移动SD卡上。您需要使用
DocumentFile#delete
。建议
java.io.file#delete
的答案是错误的。我得到了以下输出:C:\adb>adb shell ls-l/storage/6364-3136/Image Files/IMG-20180622-WA0016.jpg ls:/storage/6364-3136/Image:没有这样的文件或指令ry ls:Files/IMG-20180622-WA0016.jpg:没有这样的文件或目录我使用adb shell ls-l/the/path/returned/by/Environment.getExternalStorageDirectory().getPath()仅用于设备存储不用于SD卡,它工作正常。当我使用以下路径“/storage/6364-3136/”时出现问题,这是我的SD卡路径!