首页 > 其他分享 >[每日分享]android获取文件目录总大小实现清除缓存

[每日分享]android获取文件目录总大小实现清除缓存

时间:2022-11-24 11:31:28浏览次数:51  
标签:缓存 return file 文件夹 File path 文件目录 android size


跟大家讲一个笑话,我维护老项目,看到有一个清除缓存功能,我看了一下怎么实现的,结果就一个​​Toast​​太逗比了

/**
* 获取指定文件夹的大小
*
* @param f
* @return
* @throws Exception
*/
public static long getFileSizes(File f) {
long size = 0;
File flist[] = f.listFiles();//文件夹目录下的所有文件
if (flist == null) {//4.2的模拟器空指针。
return 0;
}
if (flist != null) {
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;
}

获取文件大小

}

/**
* 获取指定文件的大小
*
* @return
* @throws Exception
*/
public static long getFileSize(File file) {

long size = 0;
if (file.exists()) {
FileInputStream fis = null;
try {
fis = new FileInputStream(file);//使用FileInputStream读入file的数据流
size = fis.available();//文件的大小
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}

} else {
}
return size;
}

计算当前应用缓存文件夹

File file1 = AppContext.getInstance().getCacheDir();
File file2 = AppContext.getInstance().getExternalCacheDir();
long fileSizes = FileUtils.getFileSizes(file1);
long fileSizes2 = FileUtils.getFileSizes(file2);
return fileSizes + fileSizes2;

清除所有缓存

public static boolean clearAllCache() {
File externalCacheDir = SuperAppContext.getInstance().getExternalCacheDir();
File cacheDir = SuperAppContext.getInstance().getCacheDir();
boolean result = false;
if (cacheDir != null) {
result = delAllFile(cacheDir.getAbsolutePath());
}
if (externalCacheDir != null) {

result = delAllFile(externalCacheDir.getAbsolutePath()) || result ? true : false;//原生是真 或者现在是true就是true
}
return result;
}

删除文件夹

//删除指定文件夹下所有文件
//param path 文件夹完整绝对路径
public static boolean delAllFile(String path) {
boolean flag = false;
File file = new File(path);
if (!file.exists()) {
return flag;
}
if (!file.isDirectory()) {
return flag;
}
String[] tempList = file.list();
File temp = null;
for (int i = 0; i < tempList.length; i++) {
if (path.endsWith(File.separator)) {
temp = new File(path + tempList[i]);
} else {
temp = new File(path + File.separator + tempList[i]);
}
if (temp.isFile()) {
temp.delete();
}
if (temp.isDirectory()) {
delAllFile(path + "/" + tempList[i]);//先删除文件夹里面的文件
delFolder(path + "/" + tempList[i]);//再删除空文件夹
flag = true;
}
}
return flag;
}

删除volley, uiversalCache文件夹

public static File getVolleyCacheFile() {
return productSystemCacheFolder("volley");
}

public static File getImageUniversalCacheFile() {
return productSystemCacheFolder("uil-images");
}

标签:缓存,return,file,文件夹,File,path,文件目录,android,size
From: https://blog.51cto.com/u_15458814/5882981

相关文章

  • ASP .NET Core 缓存
    缓存可以通过减少生成内容所需的工作,显著提高应用的性能和可伸缩性。缓存最适用于不常更改且生成成本很高的数据。缓存生成的数据副本可以比从源中更快地返回。应该以从......
  • redis 缓存设计之穿透击穿雪崩
    缓存穿透缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,通常处于容错的考虑,如果从存储层查不到数据则不写入缓冲层缓存穿透将导致不存在的数据每次请求......
  • Android网络请求(终) 网络请求框架Retrofit
    Android网络请求(终)网络请求框架RetrofitRetrofit底层是由OkHttp封装的,Retrofit对于注解的使用十分频繁,所以不了解注解的同学们可以去查查资料什么的。这里有一个小细......
  • Android Studio 连接 MySQL数据库
    1、下载MySQL-connector-jave.jar包地址如下:https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.46 2、将jar包移到如图所示的位置,然后右键addasl......
  • 计算机结构-- week7 (缓存)
       缓存如何被使用: •Temporallocality:recentlyreferencedaddressesarelikelytobereferencedagain(reuse)   时间• Spatiallocality:If......
  • 【Azure Redis 缓存】在Azure Redis中,如何限制只允许Azure App Service访问?
    问题描述在AzureRedis服务中,如何实现只允许AzureAppService访问呢? 问题解答AzureRedis开启防火墙的功能,并在防火墙中添加上AppService的出口IP地址即可。两步......
  • android 修改 system 目录下的文件
    在超级终端输入命令:su busyboxmount可以看到/system挂接的分区如: /dev/block/mtdblock6然后重新挂接并设置为可写:busyboxmount-orw,re......
  • android 隐藏声音文件-不让音乐播放器查找到
    有时候某些程序自带的声音文件,不想被音乐播放找到,如何实现呢?很简单,在需要隐藏的目录下面添加 .nomedia 文件。内容为空即可.可以用vi来添加这个空文件.在超级端下......
  • 【算法】LRU 缓存机制,删除排序链表中的重复元素,买卖股票的最佳时机三道算法题
    买卖股票的最佳时机题目描述给定一个数组prices,它的第 i个元素 prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个......
  • # Android网络请求(4) 网络请求框架Volley
    Android网络请求(4) 网络请求框架VolleyVolley是Google在2013年5月15日到17日在旧金山Moscone中心举办网络开发者年会中推出的Android异步网络加载框架和图片加载框架,它特......