从内部存储中删除文件

时间:2011-03-30 12:53:12

标签: android file-io

我正在尝试删除存储在内部存储中的图像。到目前为止我已经想出了这个:

File dir = getFilesDir();
File file = new File(dir, id+".jpg");
boolean deleted = file.delete();

这是另一个问题,answered with

File dir = getFilesDir();
File file = new File(dir, "my_filename");
boolean deleted = file.delete();

我的示例总是返回false。我可以在eclipse中的DDMS中看到文件fx 2930.jpg

8 个答案:

答案 0 :(得分:122)

getFilesDir()不知何故不起作用。 使用返回整个路径和文件名的方法可以得到所需的结果。这是代码:

File file = new File(inputHandle.getImgPath(id));
boolean deleted = file.delete();

答案 1 :(得分:44)

您是否尝试过Context.deleteFile()

答案 2 :(得分:16)

这对我有用:

File file = new File(photoPath);
file.delete();

context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));

答案 3 :(得分:14)

String dir = getFilesDir().getAbsolutePath();
File f0 = new File(dir, "myFile");
boolean d0 = f0.delete(); 
Log.w("Delete Check", "File deleted: " + dir + "/myFile " + d0);

代码File dir = getFilesDir();不起作用,因为这是对File对象的请求。 您正在尝试检索声明目录路径的String,因此您需要将'dir'声明为String,然后请求有权访问该信息的构造函数返回String形式的目录的绝对路径

答案 4 :(得分:10)

您还可以使用:file.getCanonicalFile().delete();

答案 5 :(得分:3)

File file = new File(getFilePath(imageUri.getValue())); 
boolean b = file.delete();

在我的情况下不起作用。

boolean b = file.delete();                 // returns false
boolean b = file.getAbsolutePath.delete(); // returns false 

总是返回false。

此问题已通过使用以下代码解决:

ContentResolver contentResolver = getContentResolver();
contentResolver.delete(uriDelete, null, null);

答案 6 :(得分:2)

你试过getFilesDir().getAbsolutePath()吗?

似乎通过使用完整路径初始化File对象来解决问题。我相信这也可以解决问题。

答案 7 :(得分:-1)

这是一个古老的话题,但是我会加我的经验,也许有人会觉得有用

>     2019-11-12 20:05:50.178 27764-27764/com.strba.myapplicationx I/File: /storage/emulated/0/Android/data/com.strba.myapplicationx/files/Readings/JPEG_20191112_200550_4444350520538787768.jpg//file when it was created

2019-11-12 20:05:58.801 27764-27764/com.strba.myapplicationx I/File: content://com.strba.myapplicationx.fileprovider/my_images/JPEG_20191112_200550_4444350520538787768.jpg //same file when trying to delete it

解决方案1:

              Uri uriDelete=Uri.parse (adapter.getNoteAt (viewHolder.getAdapterPosition ()).getImageuri ());//getter getImageuri on my object from adapter that returns String with content uri

在这里我初始化内容解析器 并使用该URI的传递参数将其删除

            ContentResolver contentResolver = getContentResolver ();
            contentResolver.delete (uriDelete,null ,null );

solution2(这是我的第一个解决方案,我确实知道):内容解析器存在...

              String path = "/storage/emulated/0/Android/data/com.strba.myapplicationx/files/Readings/" +
                    adapter.getNoteAt (viewHolder.getAdapterPosition ()).getImageuri ().substring (58);

            File file = new File (path);
            if (file != null) {
                file.delete ();
            }

希望这对某人有帮助 快乐的编码