缓存
获取总的缓存文件的大小
1 /** 2 * 获取总的缓存文件的大小 3 * @param context 4 * @return 5 * @throws Exception 6 */ 7 public static String getTotalCacheSize(Context context) throws Exception 8 { 9 //计算内部缓存的大小 10 long cacheSize = getFolderSize(context.getCacheDir()); 11 //如果sd卡安装好,则计算外部缓存的大小 12 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) 14 { 15 cacheSize += getFolderSize(context.getExternalCacheDir()); 16 } 17 18 //将缓存大小格式化返回 19 return formatSize(cacheSize); 20 }
1 /** 2 * 获取该路径下所有文件的大小总和 3 * @param file 路径名称 4 * @return 5 * @throws Exception 6 */ 7 private static long getFolderSize(File file) throws Exception 8 { 9 long size = 0; 10 try 11 { 12 //获取该路径下的所有文件 13 File[] fileList = file.listFiles(); 14 //遍历所有文件 15 for (int i = 0; i < fileList.length; i++) 16 { 17 //如果为文件夹则递归计算文件大小 18 if (fileList[i].isDirectory()) 19 { 20 size = size + getFolderSize(fileList[i]); 21 } 22 //如果为文件则直接计算长度 23 else 24 { 25 size = size + fileList[i].length(); 26 } 27 } 28 } 29 catch (Exception e) 30 { 31 e.printStackTrace(); 32 } 33 return size; 34 }
1 /** 2 * 将文件大小格式化 3 * @param size 4 * @return 5 */ 6 private static String formatSize(double size) 7 { 8 //小于1kb 9 double kb = size / 1024; 10 if (kb < 1) 11 { 12 return twoDecimal(size) + "Byte"; 13 } 14 //小于1mb 15 double mb = kb / 1024; 16 if (mb < 1) 17 { 18 return twoDecimal(kb)+"Kb"; 19 } 20 21 double gb = mb / 1024; 22 if (gb < 1) 23 { 24 return twoDecimal(mb)+"Mb"; 25 } 26 27 double tb = gb / 1024; 28 if (tb < 1) 29 { 30 return twoDecimal(gb)+"Gb"; 31 } 32 33 return twoDecimal(tb)+"Tb"; 34 }
删除所有缓存文件
/** * 删除所有缓存文件 * @param context */ public static void clearAllCache(Context context) { //删除所有内置缓存 deleteDir(context.getCacheDir()); //如果有sd卡,则删除所有sd卡上的缓存 if (Environment.getExternalStorageState() .equals(Environment.MEDIA_MOUNTED)) { deleteDir(context.getExternalCacheDir()); } }
1 /** 2 * 删除文件路径 3 * @param dir 4 * @return 5 */ 6 private static boolean deleteDir(File dir) 7 { 8 if(dir==null) 9 { 10 return false; 11 } 12 //是文件路径 13 if (dir.isDirectory()) 14 { 15 //列出路径下所有文件 16 File[] sub = dir.listFiles(); 17 //遍历路径文件 18 for (int i = 0; i < sub.length; i++) 19 { 20 //使用递归方法删除每个文件 21 boolean success = deleteDir(sub[i]); 22 if (!success) 23 { 24 return false; 25 } 26 } 27 } 28 //不是文件路径,则直接删除 29 return dir.delete(); 30 }
1 private static Double twoDecimal(Double d) 2 { 3 if(d==null) 4 { 5 return null; 6 } 7 return Double.parseDouble(TWO_Decimal_FORMAT.format(d)); 8 }
人生处处是惊喜