Java 无法删除SD卡上的文件
我正试图删除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
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卡路径!