android 統計資料夾大小及刪除資料夾下所有檔案和路徑

yangxi_001發表於2014-11-28
  1. /**   
  2.      * 獲取資料夾大小   
  3.      * @param file File例項   
  4.      * @return long      
  5.      */     
  6.     public static long getFolderSize(java.io.File file){    
  7.    
  8.         long size = 0;    
  9.         try {  
  10.             java.io.File[] fileList = file.listFiles();     
  11.             for (int i = 0; i < fileList.length; i++)     
  12.             {     
  13.                 if (fileList[i].isDirectory())     
  14.                 {     
  15.                     size = size + getFolderSize(fileList[i]);    
  16.    
  17.                 }else{     
  18.                     size = size + fileList[i].length();    
  19.    
  20.                 }     
  21.             }  
  22.         } catch (Exception e) {  
  23.             // TODO Auto-generated catch block  
  24.             e.printStackTrace();  
  25.         }     
  26.        //return size/1048576;    
  27.         return size;    
  28.     }    
  29.       
  30.     /**   
  31.      * 刪除指定目錄下檔案及目錄    
  32.      * @param deleteThisPath   
  33.      * @param filepath   
  34.      * @return    
  35.      */     
  36.     public void deleteFolderFile(String filePath, boolean deleteThisPath) {     
  37.         if (!TextUtils.isEmpty(filePath)) {     
  38.             try {  
  39.                 File file = new File(filePath);     
  40.                 if (file.isDirectory()) {// 處理目錄     
  41.                     File files[] = file.listFiles();     
  42.                     for (int i = 0; i < files.length; i++) {     
  43.                         deleteFolderFile(files[i].getAbsolutePath(), true);     
  44.                     }      
  45.                 }     
  46.                 if (deleteThisPath) {     
  47.                     if (!file.isDirectory()) {// 如果是檔案,刪除     
  48.                         file.delete();     
  49.                     } else {// 目錄     
  50.                    if (file.listFiles().length == 0) {// 目錄下沒有檔案或者目錄,刪除     
  51.                             file.delete();     
  52.                         }     
  53.                     }     
  54.                 }  
  55.             } catch (Exception e) {  
  56.                 // TODO Auto-generated catch block  
  57.                 e.printStackTrace();  
  58.             }     
  59.         }     
  60.     }    
  61.     /** 
  62.      * 格式化單位 
  63.      * @param size 
  64.      * @return 
  65.      */  
  66.     public static String getFormatSize(double size) {  
  67.         double kiloByte = size/1024;  
  68.         if(kiloByte < 1) {  
  69.             return size + "Byte(s)";  
  70.         }  
  71.           
  72.         double megaByte = kiloByte/1024;  
  73.         if(megaByte < 1) {  
  74.             BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));  
  75.             return result1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "KB";  
  76.         }  
  77.           
  78.         double gigaByte = megaByte/1024;  
  79.         if(gigaByte < 1) {  
  80.             BigDecimal result2  = new BigDecimal(Double.toString(megaByte));  
  81.             return result2.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "MB";  
  82.         }  
  83.           
  84.         double teraBytes = gigaByte/1024;  
  85.         if(teraBytes < 1) {  
  86.             BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));  
  87.             return result3.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "GB";  
  88.         }  
  89.         BigDecimal result4 = new BigDecimal(teraBytes);  
  90.         return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "TB";  
  91.     }  

相關文章