直接上代码java
import java.io.File; import java.math.BigDecimal; import android.content.Context; import android.os.Environment; //清理应用缓存 public class DataCleanManager { private static String imageFile = Environment.getExternalStorageDirectory() + "/图片文件夹路径";// 图片文件夹所在路径 public static double getTotalCacheSize(Context context) throws Exception { long cacheSize = getFolderSize(context.getCacheDir());//获取应用内部缓存 if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { cacheSize += getFolderSize(context.getExternalCacheDir());//获取应用外部缓存 } cacheSize += getFolderSize(new File(imageFile));//获取更改头像所在路径的内容大小 return getFormatSize(cacheSize); } public static void clearAllCache(Context context) { deleteDir(context.getCacheDir());//获取应用程序的缓存目录,而后删除清空 if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { deleteDir(context.getExternalCacheDir());//获取应用程序外部存储的存储目录,而后删除清空 } deleteDir(new File(imageFile));//清楚图片所在路径中的内容 } //清空文件中的内容 private static boolean deleteDir(File dir) { if (dir != null && dir.isDirectory()) { String[] children = dir.list(); for (int i = 0; i < children.length; i++) { boolean success = deleteDir(new File(dir, children[i])); if (!success) { return false; } } } return dir.delete(); } // 获取文件 // Context.getExternalFilesDir() -->SDCard/Android/data/你的应用的包名/files/ 目录,通常放一些长时间保存的数据 // Context.getExternalCacheDir() // -->SDCard/Android/data/你的应用包名/cache/目录,通常存放临时缓存数据 public static long getFolderSize(File file) throws Exception { long size = 0; try { File[] fileList = file.listFiles(); for (int i = 0; i < fileList.length; i++) { // 若是下面还有文件 if (fileList[i].isDirectory()) { size = size + getFolderSize(fileList[i]); } else { size = size + fileList[i].length(); } } } catch (Exception e) { e.printStackTrace(); } return size; } /** * 格式化单位 * * @param size *@return */ public static double getFormatSize(double size) { // double kiloByte = size / 1024; // if (kiloByte < 1) { // return size + "Byte"; // } // double megaByte = kiloByte / 1024; // if (megaByte < 1) { // BigDecimal result1 = new BigDecimal(Double.toString(kiloByte)); // return result1.setScale(2, BigDecimal.ROUND_HALF_UP) // .toPlainString() + "KB"; // } BigDecimal result2 = new BigDecimal(Double.toString(size / (1024*1024))); return result2.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); // double teraBytes = gigaByte / 1024; // if (teraBytes < 1) { // BigDecimal result3 = new BigDecimal(Double.toString(gigaByte)); // return result3.setScale(2, BigDecimal.ROUND_HALF_UP) // .toPlainString() + "GB"; // } // BigDecimal result4 = new BigDecimal(teraBytes); // return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() // + "TB"; } }