android如何获取APP缓存大小,并展示在txtview中,以及点击按钮后,可以清除缓存的实现完整代码,加上注释
时间: 2024-05-08 17:15:18 浏览: 212
Android 获取应用缓存大小与清除缓存的方法
获取APP缓存大小并展示在TextView中:
```java
public void getCacheSize() {
try {
// 获取缓存目录
File cacheDir = getCacheDir();
long size = getFolderSize(cacheDir);
// 将字节数转换为MB并保留两位小数
float cacheSize = (float) size / 1024 / 1024;
DecimalFormat df = new DecimalFormat("0.00");
// 将缓存大小设置到TextView中
mCacheSizeTextView.setText(df.format(cacheSize) + "MB");
} catch (Exception e) {
e.printStackTrace();
}
}
// 获取文件夹大小
public static long getFolderSize(File file) throws Exception {
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();
}
return size;
}
```
清除缓存的实现:
```java
public void clearCache() {
try {
// 获取缓存目录
File cacheDir = getCacheDir();
clearFolder(cacheDir);
// 将缓存大小设置为0
mCacheSizeTextView.setText("0.00MB");
} catch (Exception e) {
e.printStackTrace();
}
}
// 清除文件夹
public static void clearFolder(File file) {
try {
if (file != null && file.isDirectory()) {
File[] fileList = file.listFiles();
for (int i = 0; i < fileList.length; i++) {
// 如果下面还有文件
if (fileList[i].isDirectory()) {
clearFolder(fileList[i]);
} else {
fileList[i].delete();
}
}
file.delete();
}
} catch (Exception e) {
e.printStackTrace();
}
}
```
点击清除缓存按钮后的实现:
```java
mClearCacheButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clearCache();
}
});
```
阅读全文