【MVP】CacheUtil缓存工具类,获得缓存大小和清除缓存
2017-08-24 17:57
274 查看
缓存管理是所有App都适用的。下面是网上比较全面的。
package com.example.chen.lolhelper.util; import android.content.Context; import android.os.Environment; import java.io.File; import java.math.BigDecimal; /** * Created by chen on 2017/8/24. * * 缓存类 */ public class CacheUtil { /** * * 清除本应用内部缓存(/data/data/com.xxx.xxx/cache) * * * * @param context */ public static void cleanInternalCache(Context context) { deleteFilesByDirectory(context.getCacheDir()); } /** * 清除本应用所有数据库(/data/data/com.xxx.xxx/databases) * @param context */ public static void cleanDatabases(Context context){ deleteFilesByDirectory(new File("/data/data/" +context.getPackageName()+"/databases")); } /** * * 清除本应用SharedPreference(/data/data/com.xxx.xxx/shared_prefs) * * * @param context */ public static void cleanSharedPreference(Context context){ deleteFilesByDirectory(new File("/data/data/" +context.getPackageName()+"/shared_prefs")); } /** * * 按名字清除本应用数据库 * * * * @param context * @param dbname */ public static void cleanDatabaseByName(Context context,String dbname){ context.deleteDatabase(dbname); } /** * * 清除/data/data/com.xxx.xxx/files下的内容 * * * * @param context */ public static void cleanFiles(Context context) { deleteFilesByDirectory(context.getFilesDir()); } /** * * 清除外部cache下的内容(/mnt/sdcard/android/data/com.xxx.xxx/cache) * * @param context */ public static void cleanExternalCache(Context context){ if (Environment.getExternalStorageState() .equals(Environment.MEDIA_MOUNTED)){ deleteFilesByDirectory(context.getExternalCacheDir()); } } /** * * 清除自定义路径下的文件,使用需小心,请不要误删。而且只支持目录下的文件删除 * * * * @param filePath */ public static void cleanCustomCache(String filePath){ deleteFilesByDirectory(new File(filePath)); } /** * * 清除本应用所有的数据 * * * * @param context * @param filepath */ public static void cleanApplicationData(Context context, String... filepath) { cleanInternalCache(context); cleanExternalCache(context); cleanDatabases(context); cleanSharedPreference(context); cleanFiles(context); if (filepath == null) { return; } for (String filePath : filepath) { cleanCustomCache(filePath); } } /** * * 删除方法 这里只会删除某个文件夹下的文件,如果传入的directory是个文件,将不做处理 * * * * @param directory */ public static void deleteFilesByDirectory(File directory){ if(directory != null && directory.exists() && directory.isDirectory()){ for (File item:directory.listFiles()){ if (item.isFile()){ item.delete(); }else if (item.isDirectory()){ deleteFilesByDirectory(item); } } } } /** * * Context.getExternalFilesDir() --> SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据 * Context.getExternalCacheDir() --> SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据 * * 计算文件夹的大小 * @param file * @return * @throws Exception */ public static long getFolderSize(File file)throws Exception{ long szie = 0; try { File[] fileList = file.listFiles(); for (int i=0;i<fileList.length;i++){ // 如果下面还有文件 if (fileList[i].isDirectory()){ szie = szie + getFolderSize(fileList[i]); }else { szie = szie + fileList[i].length(); } } }catch (Exception e){ e.printStackTrace(); } return szie; } public static String getFormatSize(double size){ double kiloByte = size/1024; if (kiloByte < 1){ return size+"Byte"; } double megaByte =kiloByte/1024; if (megaByte < 1){ BigDecimal result1 = new BigDecimal(Double.toString(kiloByte)); return result1.setScale(2,BigDecimal.ROUND_HALF_UP) .toPlainString()+"KB"; } double gigaByte = megaByte/1024; if (gigaByte<1){ BigDecimal result2 = new BigDecimal(Double.toString(megaByte)); return result2.setScale(2,BigDecimal.ROUND_HALF_UP) .toPlainString()+"MB"; } double teraBytes = gigaByte /1024; if (teraBytes < 1){ BigDecimal result3 =new BigDecimal(Double.toString(gigaByte)); return result3.setScale(2,BigDecimal.ROUND_HALF_UP) .toPlainString()+"GB"; } BigDecimal result4 = new BigDecimal(teraBytes); return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "TB"; } public static String getCacheSize(File file)throws Exception{ return getFormatSize(getFolderSize(file)); } }
相关文章推荐
- Android清除外部和内部缓存,数据库,SharedPreference,指定路径下的文件,获取缓存大小,格式化储存单位工具类
- 利用反射获得程序的缓存大小、应用程序大小、数据大小,利用反射清除缓存,全部清理
- android 获得各个应用程序缓存大小和清除全部应用缓存
- android_获取缓存大小和清除缓存功能
- 【SDWebImage】 显示图片缓存大小和清除缓存
- 清除缓存的工具类
- iOS中显示获取缓存的大小多少M,点击清除缓存方法
- 获取document路径以及其下面的文件大小 & 清除文件,缓存
- 计算内存大小与清除缓存文件
- Android计算缓存大小和清除缓存
- Android中获取缓存大小和清除缓存功能
- sdwebimage如何获取缓存大小以及清除缓存
- 关于android清除缓存代码及计算大小
- 计算缓存大小和清除缓存
- Android开发记录20-获取缓存大小和清除缓存功能
- (一一七)基本文件操作 -SDWebImage清除缓存 -文件夹的大小计算
- 获取缓存大小和清除缓存功能
- Android 获取缓存大小和清除缓存功能
- android计算缓存大小并清除
- SDWebImage/SDImageCache 获得缓存大小,清理缓存。