我正在尝试删除存储在内部存储中的图像。到目前为止我已经想出了这个:
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
。
答案 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 ();
}
希望这对某人有帮助 快乐的编码