zoukankan      html  css  js  c++  java
  • 清除缓存

    public class CleanMessageUtil {
    
    
        /**
         * @param context
         * @return
         * @throws Exception
         *             获取当前缓存
         */
        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);
        }
    
        /**
         * @param context
         *            删除缓存
         */
        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();
                int size = 0;
                if (children != null) {
                    size = children.length;
                    for (int i = 0; i < size; i++) {
                        boolean success = deleteDir(new File(dir, children[i]));
                        if (!success) {
                            return false;
                        }
                    }
                }
    
            }
            if (dir == null) {
                return true;
            } else {
    
                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();
                int size2 = 0;
                if (fileList != null) {
                    size2 = fileList.length;
                    for (int i = 0; i < size2; 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";
        }
        }
  • 相关阅读:
    如何通过 Vue-Cli3
    Vue简单了解
    年后跳槽如何准备?
    2016年1月-前端开发月刊
    前端如何正确选择offer,到底选哪个?
    前端应聘要准备些什么样子的作品?
    如何看待豪情的前端群的群规?
    前端工程师如何打发闲余时光?
    页面重构时的注意事项
    我想立刻辞职,然后闭关学习编程语言,我给自己3个月时间学习C语言!这样行的通吗
  • 原文地址:https://www.cnblogs.com/leshen/p/7566771.html
Copyright © 2011-2022 走看看