美文网首页
Android缓存清理

Android缓存清理

作者: Colin高宏杰 | 来源:发表于2017-12-07 14:29 被阅读0次

public classCacheDataManager {

public staticStringgetTotalCacheSize(Context context)throwsException {

longcacheSize =getFolderSize(context.getCacheDir());

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

cacheSize +=getFolderSize(context.getExternalCacheDir());

}

returngetFormatSize(cacheSize);

}

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(inti =0;i < children.length;i++) {

booleansuccess =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 longgetFolderSize(File file)throwsException {

longsize =0;

try{

File[] fileList = file.listFiles();

for(inti =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

*/

public staticStringgetFormatSize(doublesize) {

doublekiloByte = size /1024;

if(kiloByte <1) {

returnsize +"Byte";

}

doublemegaByte = kiloByte /1024;

if(megaByte <1) {

BigDecimal result1 =newBigDecimal(Double.toString(kiloByte));

returnresult1.setScale(2,BigDecimal.ROUND_HALF_UP).toPlainString() +"KB";

}

doublegigaByte = megaByte /1024;

if(gigaByte <1) {

BigDecimal result2 =newBigDecimal(Double.toString(megaByte));

returnresult2.setScale(2,BigDecimal.ROUND_HALF_UP).toPlainString() +"MB";

}

doubleteraBytes = gigaByte /1024;

if(teraBytes <1) {

BigDecimal result3 =newBigDecimal(Double.toString(gigaByte));

returnresult3.setScale(2,BigDecimal.ROUND_HALF_UP).toPlainString() +"GB";

}

BigDecimal result4 =newBigDecimal(teraBytes);

returnresult4.setScale(2,BigDecimal.ROUND_HALF_UP).toPlainString() +"TB";

}

}

相关文章

网友评论

      本文标题:Android缓存清理

      本文链接:https://www.haomeiwen.com/subject/pkaoqxtx.html