计算清空缓存总大小,不管内部缓存还是外部缓存

publicclassDataCleanManager {

publicstaticString getTotalCacheSize(Context context)throwsException {

longcacheSize = getFolderSize(context.getCacheDir());

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

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

}

returngetFormatSize(cacheSize);

}

publicstaticvoidclearAllCache(Context context) {

deleteDir(context.getCacheDir());

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

deleteDir(context.getExternalCacheDir());

}

}

privatestaticbooleandeleteDir(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) {

returnfalse;

}

}

}

returndir.delete();

}

// 获取文件

//Context.getExternalFilesDir() --> SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据

//Context.getExternalCacheDir() --> SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据

publicstaticlonggetFolderSize(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;

}

/**

* 格式化单位

*

* @param size

* @return

*/

publicstaticString getFormatSize(doublesize) {

doublekiloByte = size /1024;

if(kiloByte <1) {

//            return size + "Byte";

return"0K";

}

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";

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 项目中碰到了计算缓存大小和清空缓存的功能,这个很常见的功能,几乎每个APP都有,以为实现很简单,网上搜了一大堆,发...
    读行游阅读 901评论 1 6
  • 清除缓存功能算是个十分鸡肋的功能了,但是大多数产品或者客户都希望有这么个东西显得APP功能完善,网上有很多,但是对...
    0156770c53ab阅读 11,181评论 10 24
  • 当我们回首往日旧时光之时,是否会有一丝惭愧;当我们回想远去的记忆之时,是否会有一丝后悔。我们的年岁在逐渐增长,我们...
    陈世俗陈阅读 559评论 0 0
  • 内容简介: 书中讲述了发生在我们身边的很多爱情故事,有念念不忘的美好,有爱而不得的疼痛,有生离死别的遗憾,有一再错...
    滴水沁心阅读 373评论 4 11
  • 前几天的福建天气极其炎热,终于这两天变得有些凉爽。和朋友一起安静的走在凉风习习的校园有着说不出了满足。定下了目标希...
    日月禾时光阅读 207评论 0 0