只要有热情,哪里都是舞台

缓存

获取总的缓存文件的大小
 
 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     }  

 

posted @ 2016-10-10 17:23  -sky  阅读(227)  评论(0编辑  收藏  举报