package com.ysvideo.zhibo.lib.common.util.cache;
|
|
import android.content.Context;
|
|
import java.io.File;
|
import java.text.DecimalFormat;
|
|
/**
|
* 缓存工具类
|
*/
|
public class AndroidCacheUtil {
|
|
public static long getFileSize(File f) throws Exception// 取得文件夹大小
|
{
|
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 static String formetFileSize(long fileS) {// 转换文件大小
|
if (fileS == 0) {
|
return "0KB";
|
}
|
DecimalFormat df = new DecimalFormat("#.00");
|
String fileSizeString = "";
|
if (fileS < 1024) {
|
fileSizeString = df.format((double) fileS) + "B";
|
} else if (fileS < 1048576) {
|
fileSizeString = df.format((double) fileS / 1024) + "K";
|
} else if (fileS < 1073741824) {
|
fileSizeString = df.format((double) fileS / 1048576) + "M";
|
} else {
|
fileSizeString = df.format((double) fileS / 1073741824) + "G";
|
}
|
return fileSizeString;
|
}
|
|
public static long getCacheSize(Context context) throws Exception {
|
return getFileSize(context.getCacheDir())
|
+ getFileSize(context.getExternalCacheDir());
|
}
|
|
public static String getCacheSizeDesc(Context context) throws Exception {
|
long size = getCacheSize(context);
|
return formetFileSize(size);
|
}
|
|
|
public static boolean trimCache(Context context) {
|
File dir = context.getCacheDir();
|
if (dir != null && dir.isDirectory() && dir.listFiles().length != 0) {
|
return deleteDir(dir);
|
} else {
|
return false;
|
}
|
}
|
|
public static boolean trimExternalCache(Context context) {
|
|
File dir = context.getExternalCacheDir();
|
if (dir != null && dir.isDirectory() && dir.listFiles().length != 0) {
|
return deleteDir(dir);
|
} else {
|
return false;
|
}
|
|
}
|
|
/**
|
* 清除所有缓存
|
* @param context
|
* @return
|
*/
|
public static boolean trimAllCache(Context context) {
|
try {
|
trimCache(context);
|
trimExternalCache(context);
|
return true;
|
} catch (Exception e) {
|
return false;
|
}
|
}
|
|
|
private 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();
|
|
}
|
|
}
|