zoukankan      html  css  js  c++  java
  • 缓存

    获取总的缓存文件的大小
     
     1 /**
     2       * 获取总的缓存文件的大小
     3       * @param context
     4       * @return
     5       * @throws Exception
     6       */
     7      public static String getTotalCacheSize(Context context) throws Exception
     8      {
     9          //计算内部缓存的大小
    10          long cacheSize = getFolderSize(context.getCacheDir());
    11          //如果sd卡安装好,则计算外部缓存的大小
    12          if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
    14          {  
    15              cacheSize += getFolderSize(context.getExternalCacheDir());
    16          }  
    17          
    18          //将缓存大小格式化返回
    19          return formatSize(cacheSize);
    20      }
     1 /**
     2      * 获取该路径下所有文件的大小总和
     3      * @param file 路径名称
     4      * @return
     5      * @throws Exception
     6      */
     7     private static long getFolderSize(File file) throws Exception
     8     {  
     9         long size = 0;  
    10         try 
    11         {  
    12             //获取该路径下的所有文件
    13             File[] fileList = file.listFiles();
    14             //遍历所有文件
    15             for (int i = 0; i < fileList.length; i++) 
    16             {  
    17                 //如果为文件夹则递归计算文件大小
    18                 if (fileList[i].isDirectory()) 
    19                 {  
    20                     size = size + getFolderSize(fileList[i]);  
    21                 } 
    22                 //如果为文件则直接计算长度
    23                 else 
    24                 {  
    25                     size = size + fileList[i].length();  
    26                 }  
    27             }  
    28         } 
    29         catch (Exception e)
    30         {  
    31             e.printStackTrace();  
    32         }  
    33         return size;  
    34     }  
     1 /**
     2      * 将文件大小格式化 
     3      * @param size
     4      * @return
     5      */
     6     private static String formatSize(double size)
     7     {  
     8         //小于1kb
     9         double kb = size / 1024;  
    10         if (kb < 1)
    11         {  
    12             return twoDecimal(size) + "Byte";  
    13         }  
    14         //小于1mb
    15         double mb = kb / 1024;  
    16         if (mb < 1) 
    17         {  
    18             return twoDecimal(kb)+"Kb";
    19         }  
    20   
    21         double gb = mb / 1024;  
    22         if (gb < 1) 
    23         {  
    24             return twoDecimal(mb)+"Mb";
    25         }  
    26   
    27         double tb = gb / 1024;  
    28         if (tb < 1) 
    29         {  
    30             return twoDecimal(gb)+"Gb";
    31         }  
    32         
    33         return twoDecimal(tb)+"Tb";
    34     }  



    删除所有缓存文件


    /**
         * 删除所有缓存文件
         * @param context
         */
        public static void clearAllCache(Context context)
        {
            //删除所有内置缓存
            deleteDir(context.getCacheDir());
            //如果有sd卡,则删除所有sd卡上的缓存
            if (Environment.getExternalStorageState()
                    .equals(Environment.MEDIA_MOUNTED))
            {  
                deleteDir(context.getExternalCacheDir());
            }  
        }
     1 /**
     2      * 删除文件路径
     3      * @param dir
     4      * @return
     5      */
     6     private static boolean deleteDir(File dir)
     7     {
     8         if(dir==null)
     9         {
    10             return false;
    11         }
    12         //是文件路径
    13         if (dir.isDirectory())
    14         {
    15             //列出路径下所有文件
    16             File[] sub = dir.listFiles();
    17             //遍历路径文件
    18             for (int i = 0; i < sub.length; i++) 
    19             {
    20                 //使用递归方法删除每个文件
    21                 boolean success = deleteDir(sub[i]);
    22                 if (!success) 
    23                 {
    24                     return false;
    25                 }
    26             }
    27         }
    28         //不是文件路径,则直接删除
    29         return dir.delete();
    30     }
    1 private static Double twoDecimal(Double d)
    2     {
    3         if(d==null)
    4         {
    5             return null;
    6         }
    7         return Double.parseDouble(TWO_Decimal_FORMAT.format(d));
    8     }  
    人生处处是惊喜
  • 相关阅读:
    cookie
    接上一篇
    es6
    本地文件r如何上传到github上
    npm的使用说明
    被公司996下的程序媛心路历程
    起点2020
    ES5(基本包装类型)字符串的方法
    ES5数组的方法
    css伪类
  • 原文地址:https://www.cnblogs.com/ransky/p/5946622.html
Copyright © 2011-2022 走看看