android中帮我写一个代码,自定义一个方法,判断在手机目录中遍历出的图片文件是否是可以删除的
时间: 2023-07-15 17:11:48 浏览: 94
android用遍历删除指定类型的文件
4星 · 用户满意度95%
好的,可以参考以下代码实现:
```java
/**
* 判断图片文件是否可删除
* @param file 图片文件
* @return true表示可删除,false表示不可删除
*/
public boolean isImageDeletable(File file) {
if (file == null || !file.exists() || !file.isFile()) {
return false;
}
// 获取文件扩展名
String extension = getFileExtension(file.getName());
if (TextUtils.isEmpty(extension)) {
return false;
}
// 判断是否为支持的图片格式
if (extension.equalsIgnoreCase("jpg") || extension.equalsIgnoreCase("jpeg")
|| extension.equalsIgnoreCase("png") || extension.equalsIgnoreCase("gif")) {
// 判断图片是否被占用
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), options);
if (bitmap != null) {
bitmap.recycle();
}
return options.outWidth > 0 && options.outHeight > 0;
}
return false;
}
/**
* 获取文件扩展名
* @param filename 文件名
* @return 文件扩展名
*/
private String getFileExtension(String filename) {
if (TextUtils.isEmpty(filename)) {
return "";
}
int dotIndex = filename.lastIndexOf(".");
if (dotIndex >= 0) {
return filename.substring(dotIndex + 1);
}
return "";
}
```
这个方法的实现思路是:
1. 首先判断传入的参数是否合法,如果文件不存在或不是文件,则返回false。
2. 获取文件扩展名,如果为空则返回false。
3. 判断文件类型是否为支持的图片格式(这里只考虑了jpg、jpeg、png、gif四种格式),如果不是则返回false。
4. 使用BitmapFactory.Options的inJustDecodeBounds属性来获取图片的宽高信息,如果宽高都大于0,则说明图片没有被占用,可以删除。
使用方法示例:
```java
File file = new File("/sdcard/DCIM/Camera/test.jpg");
boolean deletable = isImageDeletable(file);
if (deletable) {
file.delete();
}
```
注意:这个方法只是判断图片是否可以删除,如果要删除图片,还需要再做其他的判断。比如是否有访问权限、是否正在被使用等等。
阅读全文