Android编程实现计算缓存大小,并清除缓存
功能实现
计算某一位置缓存大小
获取文件位置的缓存大小,并将大小显示为有存储单位的数值。
private String getCacheSize(){
String cachePath = "文件位置";
File cacheFile = new File(cachePath);
long cachesize = 0;
try {
cachesize = getFileSizes(cacheFile);
} catch (Exception e) {
e.printStackTrace();
}
return FormetFileSize(cachesize);
}
getFileSizes()的作用是计算缓存的大小。
/**
* 获取指定文件夹
* @param f
* @return
* @throws Exception
*/
public long getFileSizes(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 + getFileSizes(flist[i]);
}
else{
size =size + getFileSize(flist[i]);
}
}
return size;
}
FormetFileSize():
public String FormetFileSize(long fileS)
{
DecimalFormat df = new DecimalFormat("#.00");
String fileSizeString = "";
String wrongSize="0B";
if(fileS==0){
return wrongSize;
}
if (fileS < 1024){
fileSizeString = df.format((double) fileS) + "B";
}
else if (fileS < 1048576){
fileSizeString = df.format((double) fileS / 1024) + "KB";
}
else if (fileS < 1073741824){
fileSizeString = df.format((double) fileS / 1048576) + "MB";
}
else{
fileSizeString = df.format((double) fileS / 1073741824) + "GB";
}
return fileSizeString;
}
清除缓存
private void clearAppCache(String path) {
File cacheFile = new File(path);
if (!cacheFile.exists()){
//如果不存在则空执行
}else {
for (File file : cacheFile.listFiles()) {
if (file.isFile())
file.delete(); // 删除所有文件
else if (file.isDirectory())
clearAppCache(file); // 递规的方式删除文件夹
}
cacheFile.delete();// 删除目录本身
}
}
补充
获取指定文件的大小
/**
* @param
* @return
* @throws Exception
*/
public long getFileSize(File file) throws Exception
{
long size = 0;
if (file.exists()){
FileInputStream fis = null;
fis = new FileInputStream(file);
size = fis.available();
}
else{
file.createNewFile();
return 0;
}
return size;
}