Android 清空缓存

来源:互联网 发布:蚁群算法解决指派问题 编辑:程序博客网 时间:2024/05/18 05:07
public class ClearCatchApp {    /**     * @param context     * @param catchPathString 缓存路径     * @return     * @throws Exception     * 当前缓存大小     */    public static String getTotalCacheSize(Context context, String catchPathString) throws Exception {        long cacheSize = getFolderSize(new File(catchPathString));        if (Environment.getExternalStorageState().equals(                Environment.MEDIA_MOUNTED)) {            cacheSize += getFolderSize(context.getExternalCacheDir());        }        return getFormatSize(cacheSize);    }    /**     * @param context     * @param catchPathString 缓存路径     *  清空缓存     */    public static void clearAllCache(Context context, String catchPathString) {        deleteDir(new File(catchPathString));        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/目录,一般存放临时缓存数据    private 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     */    private 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";    }}
原创粉丝点击