为什么使用file.delete()函数删除文件失败?

6

我无法从SD卡中删除文件。

File toDelete = new File(fname);
boolean result=toDelete.delete();

结果是错误的。在同一应用程序运行中,对同一文件的读写操作是有效的。 没有打开的流。没有引发任何异常。 我尝试在删除之前以这种方式使其可写。
toDelete.setWritable(true);

没有效果。 系统如何能够写入和读取同一个文件,但不能删除它?

1
请添加更多代码,说明如何构建文件路径。 - Trinimon
我可以读写这个文件,路径和权限都没有问题,但系统却拒绝删除它。 - Ekaterina Ivanova iceja.net
我觉得你是在编程中通过程序或者运行时创建文件?我说得对吗? - Dhaval Parmar
该文件是由同一应用程序在上次启动时创建的。 - Ekaterina Ivanova iceja.net
好的,这就是为什么文件没有被删除...你能给我们展示一下创建文件和删除文件的代码吗? - Dhaval Parmar
尝试这个答案:链接,它对我起作用了... - Christian
2个回答

3

您可以使用以下代码,它可能会对您有所帮助。

            File fdelete = new File(file_dj_path);
        if (fdelete.exists()) {
            if (fdelete.delete()) {
                System.out.println("file Deleted :" + file_dj_path);
            } else {
                System.out.println("file not Deleted :" + file_dj_path);
            }
        }

删除图片后刷新相册

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
 Uri.parse("file://" +  Environment.getExternalStorageDirectory())));

请查看这个链接:https://dev59.com/X2gv5IYBdhLWcg3wSe0f#10716773


该链接为一个关于IT技术的问题的解答,具体内容请查看链接。

你好!谢谢你的回答,但是文件并不总是被删除,我可以通过./adb shell看到它仍然在SD卡上。 - Ekaterina Ivanova iceja.net
你能展示一下关于文件路径的更多代码吗? - Dhaval Parmar

1
尝试做这个。
 File fileToDelete = new File(YourPath);
 boolean deleted = fileToDelete.delete();

重新安装您的卡,并检查。
 sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
                     Uri.parse("file://"
                               + Environment.getExternalStorageDirectory())));

这种方式不起作用。 - Ekaterina Ivanova iceja.net

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接