packagecom.jianong.xmtt.util;importandroid.content.Context;importandroid.os.Environment;importjava.io.File;importjava.math.BigDecimal;/*** Created by hgl on 2016/6/23.*/
public classDataCleanManager {/*** 获取缓存大小
*@paramcontext
*@return*@throwsException*/
public static String getTotalCacheSize(Context context) throwsException {long cacheSize =getFolderSize(context.getCacheDir());if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
cacheSize+=getFolderSize(context.getExternalCacheDir());
}returngetFormatSize(cacheSize);
}/*** 清除缓存
*@paramcontext*/
public static voidclearAllCache(Context context) {
deleteDir(context.getCacheDir());if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
deleteDir(context.getExternalCacheDir());
}
}private static booleandeleteDir(File dir) {if (dir != null &&dir.isDirectory()) {
String[] children=dir.list();for (int i = 0; i < children.length; i++) {boolean success = deleteDir(newFile(dir, children[i]));if (!success) {return false;
}
}
}returndir.delete();
}//获取文件大小//Context.getExternalFilesDir() --> SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据//Context.getExternalCacheDir() --> SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
public static long getFolderSize(File file) throwsException {long size = 0;try{
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();
}returnsize;
}/*** 格式化单位
*@paramsize
*@return
*/
public static String getFormatSize(doublesize) {double kiloByte = size / 1024;if (kiloByte < 1) {//return size + "Byte";
return "0K";
}double megaByte = kiloByte / 1024;if (megaByte < 1) {
BigDecimal result1= newBigDecimal(Double.toString(kiloByte));return result1.setScale(2, BigDecimal.ROUND_HALF_UP)
.toPlainString()+ "K";
}double gigaByte = megaByte / 1024;if (gigaByte < 1) {
BigDecimal result2= newBigDecimal(Double.toString(megaByte));return result2.setScale(2, BigDecimal.ROUND_HALF_UP)
.toPlainString()+ "M";
}double teraBytes = gigaByte / 1024;if (teraBytes < 1) {
BigDecimal result3= newBigDecimal(Double.toString(gigaByte));return result3.setScale(2, BigDecimal.ROUND_HALF_UP)
.toPlainString()+ "GB";
}
BigDecimal result4= newBigDecimal(teraBytes);return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString()+ "TB";
}
}