Android app内获取缓存并清除缓存
获取缓存大小:
long fileSize = 0;fileSize = getFileSize(App.getInstance().getExternalCacheDir());fileSize = fileSize + getFileSize(App.getInstance().getCacheDir());fileSize = fileSize + getFileSize(App.getInstance().getCodeCacheDir());String s = formatFileSize(fileSize);tvCache.setText(s);
public String formatFileSize(long fileSize) {//计算文件大小if (fileSize == 0) {return "0KB";}DecimalFormat df = new DecimalFormat("#.00");String fileSizeStr = "";if (fileSize < 1024) {fileSizeStr = df.format((double) fileSize) + "B";} else if (fileSize < 1024 * 1024) {fileSizeStr = df.format((double) fileSize / 1024) + "K";} else if (fileSize < 1024 * 1024 * 1024) {fileSizeStr = df.format((double) fileSize / 1024 * 1024) + "M";} else {fileSizeStr = df.format((double) fileSize / 1024 * 1024 * 1024) + "G";}return fileSizeStr;}
public long getFileSize(File f) {long size = 0;File flist[] = f.listFiles();for (int i = 0; i < flist.length; i++) {if (flist[i].isDirectory()) {size = size + getFileSize(flist[i]);} else {size = size + flist[i].length();}}return size;}
下方代码为清除缓存:
public boolean trimCache() {try {File dir = App.getInstance().getCacheDir();if (dir != null && dir.isDirectory() && dir.listFiles().length != 0) {return deleteDir(dir);} else {return false;}} catch (Exception e) {e.printStackTrace();return false;}}public boolean trimCodeCache() {try {File dir = App.getInstance().getCodeCacheDir();if (dir != null && dir.isDirectory() && dir.listFiles().length != 0) {return deleteDir(dir);} else {return false;}} catch (Exception e) {e.printStackTrace();return false;}}public boolean trimExternalCache() {try {File dir = App.getInstance().getExternalCacheDir();if (dir != null && dir.isDirectory() && dir.listFiles().length != 0) {return deleteDir(dir);} else {return false;}} catch (Exception e) {e.printStackTrace();return false;}}public 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();}
<--------------end------------------->