直接上代碼java
import java.io.File; import java.math.BigDecimal; import android.content.Context; import android.os.Environment; //清理應用緩存 public class DataCleanManager { private static String imageFile = Environment.getExternalStorageDirectory() + "/圖片文件夾路徑";// 圖片文件夾所在路徑 public static double getTotalCacheSize(Context context) throws Exception { long cacheSize = getFolderSize(context.getCacheDir());//獲取應用內部緩存 if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { cacheSize += getFolderSize(context.getExternalCacheDir());//獲取應用外部緩存 } cacheSize += getFolderSize(new File(imageFile));//獲取更改頭像所在路徑的內容大小 return getFormatSize(cacheSize); } public static void clearAllCache(Context context) { deleteDir(context.getCacheDir());//獲取應用程序的緩存目錄,而後刪除清空 if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { deleteDir(context.getExternalCacheDir());//獲取應用程序外部存儲的存儲目錄,而後刪除清空 } deleteDir(new File(imageFile));//清楚圖片所在路徑中的內容 } //清空文件中的內容 private static boolean deleteDir(File dir) { if (dir != null && dir.isDirectory()) { String[] children = dir.list(); for (int i = 0; i < children.length; i++) { boolean success = deleteDir(new File(dir, children[i])); if (!success) { return false; } } } return dir.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 size *@return */ public static double 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"; // } BigDecimal result2 = new BigDecimal(Double.toString(size / (1024*1024))); return result2.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); // 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"; } }