清除操作,可選擇是否刪除目錄
private boolean delFileByPath(String filePath) {
showDialog("清理中");
try {
File dir = new File(filePath);
if (dir == null || !dir.exists() || !dir.isDirectory()) {
dismissDialog();
ToastUtils.showShort("緩存文件空");
return false;
}
for (File file : dir.listFiles()) {
if (file.isFile()) {
//自定義
/**
if (Integer.parseInt(new SimpleDateFormat("yyyyMMdd").format(new Date())) - Integer.parseInt(file.getName().split("-")[2].split("\\.")[0].substring(0, 8)) > 30) {
Log.e(TAG, "deleteFolderFile:30天之前的刪除 ");
}
Log.e(TAG, "deleteFile: " + file.getName().split("-")[2].split("\\.")[0].substring(0, 8));
*/
//具體操作
file.delete(); // 刪除所有文件
} else if (file.isDirectory()) {
delFileByPath(file.getPath()); // 遞規的方式刪除文件夾
}
}
Log.e(TAG, "deleteFolder: " + dir.getName());
// dir.delete();// 刪除目錄本身
initView();
dismissDialog();
ToastUtils.showShort("清理完成");
return true;
} catch (Exception e) {
e.printStackTrace();
dismissDialog();
ToastUtils.showShort("清理失敗");
return false;
}
}
獲取目錄大小:
/**
* 獲取指定目錄大小
*
* @return
*/
public double getDirSize(String filePath) {
File file = new File(filePath);
//判斷文件是否存在
if (file.exists()) {
//如果是目錄則遞歸計算其內容的總大小
if (file.isDirectory()) {
File[] children = file.listFiles();
double size = 0;
for (File f : children)
size += getDirSize(f.getAbsolutePath());
return size;
} else {//如果是文件則直接返回其大小,以“兆”爲單位
double size = (double) file.length() / 1024 / 1024;
return size;
}
} else {
System.out.println("文件或者文件夾不存在,請檢查路徑是否正確!");
return 0.0;
}
}