(转)android 获取缓存大小 删除缓存
转自:http://lanaiver6291.blog.163.com/blog/static/177798310201493010622571/
//获取文件夹大小 private long getFolderSize(java.io.File file) throws Exception { long size = 0; try { java.io.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; } //一般android的缓存地址/data/data//cache //this.getCacheDir() 就是 /data/data//cache //long cacheSzie = getFolderSize(this.getCacheDir()); /**还有一部分数据放在SD卡中 Context.getExternalFilesDir()-->SDCard/Android/data/你的应用的包名/files/目录,一般放一些长时间保存的数据 Context.getExternalCacheDir()-->SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据 上面二个目录分别对应 设置 ->应用->应用详情里面的”清除数据“与”清除缓存“选项 */ /** * 删除指定目录下文件及目录 * * @param deleteThisPath * @param filepath * @return */ public void deleteFolderFile(String filePath, boolean deleteThisPath) { if (!TextUtils.isEmpty(filePath)) { try { File file = new File(filePath); if (file.isDirectory()) {// 如果下面还有文件 File files[] = file.listFiles(); for (int i = 0; i < files.length; i++) { deleteFolderFile(files[i].getAbsolutePath(), true); } } if (deleteThisPath) { if (!file.isDirectory()) {// 如果是文件,删除 file.delete(); } else {// 目录 if (file.listFiles().length == 0) {// 目录下没有文件或者目录,删除 file.delete(); } } } } catch (Exception e) { e.printStackTrace(); } } } //单位转换String size = getFormatSize(cacheSzie); /** * 格式化单位 * * @param size * @return */ private String 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"; } 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"; }
浙公网安备 33010602011771号