国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android 獲取應用緩存大小與清除緩存的方法

2019-10-21 21:42:41
字體:
來源:轉載
供稿:網友

如下所示:

package com.lucasey.littleant.frame;/**  * 文 件 名: FileCacheUtils.java  * 描 述: 主要功能有清除內/外緩存,清除數據庫,清除sharedPreference,清除files和清除自定義目錄  * */ import java.io.File; import java.math.BigDecimal; import android.content.Context; import android.os.Environment; import android.text.TextUtils; /** 本應用數據清除管理器 */ public class FileCacheUtils {  /**  * * 清除本應用內部緩存(/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  */  private static void deleteFilesByDirectory(File directory) {  if (directory != null && directory.exists() && directory.isDirectory()) {   for (File item : directory.listFiles()) {   item.delete();   }  }  }  // 獲取文件  //Context.getExternalFilesDir() --> SDCard/Android/data/你的應用的包名/files/ 目錄,一般放一些長時間保存的數據  //Context.getExternalCacheDir() --> SDCard/Android/data/你的應用包名/cache/目錄,一般存放臨時緩存數據  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;  }  /**  * 刪除指定目錄下文件及目錄  *  * @param deleteThisPath  * @param filepath  * @return  */  public static void deleteFolderFile(String filePath, boolean deleteThisPath) {  if (!TextUtils.isEmpty(filePath)) {   try {   File file = new File(filePath);   if (file.isDirectory()) {// 如果下面還有文件    File files[] = file.listFiles();    for (int i = 0; i < files.length; i++) {    deleteFolderFile(files[i].getAbsolutePath(), true);    }   }   if (deleteThisPath) {    if (!file.isDirectory()) {// 如果是文件,刪除    file.delete();    } else {// 目錄    if (file.listFiles().length == 0) {// 目錄下沒有文件或者目錄,刪除     file.delete();    }    }   }   } catch (Exception e) {   // TODO Auto-generated catch block   e.printStackTrace();   }  }  }  /**  * 格式化單位  * @param size  * @return  */  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";  }  /*** * 獲取應用緩存大小 * @param file * @return * @throws Exception */ public static String getCacheSize(File file) throws Exception {  return getFormatSize(getFolderSize(file));  } } 

以上這篇Android 獲取應用緩存大小與清除緩存的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 屯门区| 姚安县| 云龙县| 金昌市| 科技| 楚雄市| 延寿县| 六盘水市| 福建省| 黄骅市| 凤翔县| 乾安县| 连山| 无为县| 泊头市| 灵璧县| 枣阳市| 仲巴县| 永安市| 乐清市| 石城县| 轮台县| 昌吉市| 上林县| 丹巴县| 景谷| 前郭尔| 旌德县| 精河县| 通许县| 岳西县| 沁水县| 若尔盖县| 乐陵市| 新巴尔虎左旗| 弥勒县| 阳泉市| 陈巴尔虎旗| 饶平县| 南漳县| 宕昌县|