android 读取,清除缓存通用于所有手机 解决空指针
2016-04-12 18:38
441 查看
之前公司项目需要实现读取本地apk缓存和清除apk缓存的功能,果断百度之后就加到项目中,在三星 note,galaxy 华为 等等基本没有问题。但是在小米手机测试时当本地有缓存时 可以清除成功,当本地缓存为0,或者已经清除一次之后再次点击清除程序就会崩溃,查看日志报空指针错误。 想了半天没有找到好的避免办法,最后想到了抛异常,改进代码如下。目前测试没有任何问题。
首先贴上关键代码
//利用递归读取所以文件夹下的文件
首先贴上关键代码
//利用递归读取所以文件夹下的文件
public static long getFileSize(File f) // 取得文件夹大小 { long size = 0; try { if(f.listFiles()!=null){ 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(); } } } } catch (Exception e) { // TODO: handle exception } 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 boolean trimCache(Context context) { try { File dir = context.getCacheDir(); if (dir != null && dir.isDirectory() && dir.listFiles().length != 0) { return deleteDir(dir); } else { return false; } } catch (Exception e) { e.printStackTrace(); return false; } } public static boolean trimExternalCache(Context context) { try { File dir = context.getExternalCacheDir(); if (dir != null && dir.isDirectory() && dir.listFiles().length != 0) { return deleteDir(dir); } else { return false; } } catch (Exception e) { e.printStackTrace(); return false; } }
**获取本地缓存文件大小** **String cacheFileSizeString = Utils.FormetFileSize(getFileSize(getCacheDir()) + getFileSize(getExternalCacheDir()));** **清楚本地缓存文件 trimCache(getApplicationContext()); trimExternalCache(getApplicationContext());** 本人才疏学浅,如果发现错误或者有更好的建议希望各位不吝赐教。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件