这个管理类是在网上搜到的,还没有使用和验证,没有找到出处,权当备忘。

public class DataCleanManager {     public static String getTotalCacheSize(Context context) throws Exception {            long cacheSize = getFolderSize(context.getCacheDir());            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {                  cacheSize += getFolderSize(context.getExternalCacheDir());            }              return getFormatSize(cacheSize);        }    public static void clearAllCache(Context context) {        deleteDir(context.getCacheDir());        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {              deleteDir(context.getExternalCacheDir());        }      }    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 String getFormatSize(double size) {          double kiloByte = size / 1024;          if (kiloByte < 1) {  // return size + "Byte";             return "0K";        }          double megaByte = kiloByte / 1024;          if (megaByte < 1) {              BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));              return result1.setScale(2, BigDecimal.ROUND_HALF_UP)                      .toPlainString() + "KB";          }          double gigaByte = megaByte / 1024;          if (gigaByte < 1) {              BigDecimal result2 = new BigDecimal(Double.toString(megaByte));              return result2.setScale(2, BigDecimal.ROUND_HALF_UP)                      .toPlainString() + "MB";          }          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";      }  }

当你在项目中需要查下缓存大小,就使用getTotalCacheSize(Context)方法,清空缓存,就使用clearAllCache(Context)方法。

更多相关文章

  1. 安卓开发之去标题栏
  2. Android实现手机振动设置的方法
  3. Mac Android(安卓)FFMpeg 编译及集成
  4. android studio 开发 cordova plugin(组件)的 helloWorld
  5. android工程版key
  6. ProgressBar 颜色的设置
  7. Error: Could not find gradle wrapper within Android(安卓)SDK
  8. android 访问SD卡的方法
  9. android的apk包中的xml文件打开方法

随机推荐

  1. 「PostgreSQL技巧」Citus实时执行程序如
  2. 「数据库架构」三分钟搞懂事务隔离级别和
  3. 「云转型」 可证实的企业云转型战略
  4. 一文看懂 Kubernetes API 稳定性设计
  5. 大型三甲医院基础集成信息平台架构设计案
  6. 「首席看架构」CDC (捕获数据变化) Debez
  7. 从物理机“云”、集成云,到集成+原生“混
  8. 「企业微服务架构」怎么弥合不同微服务团
  9. 【数据架构】数据湖101:概述
  10. 【数据库架构】Apache Couchdb 最终一致