package com.seal.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.text.DecimalFormat; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Environment; import android.os.StatFs; import android.util.Log; public class StorageUtils { private static final String SDCARD_ROOT = Environment.getExternalStorageDirectory().getAbsolutePath() + "/"; public static String FILE_ROOT = SDCARD_ROOT + "Android/data"; private static final long LOW_STORAGE_THRESHOLD = 1024 * 1024 * 10; public static boolean isSdCardWrittenable() { if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) { return true; } return false; } /** * 设置文件保存的路径 */ public static void setFilePath(String path) { FILE_ROOT = path; } public static long getAvailableStorage() { String storageDirectory = null; storageDirectory = Environment.getExternalStorageDirectory().toString(); try { StatFs stat = new StatFs(storageDirectory); long avaliableSize = ((long) stat.getAvailableBlocks() * (long) stat.getBlockSize()); return avaliableSize; } catch (RuntimeException ex) { return 0; } } public static boolean checkAvailableStorage() { if (getAvailableStorage() < LOW_STORAGE_THRESHOLD) { return false; } return true; } public static boolean isSDCardReady() { return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); } public static void mkdir() throws IOException { File file = new File(FILE_ROOT); if (!file.exists()) { file.mkdir(); } } public static Bitmap getLoacalBitmap(String url) { try { FileInputStream fis = new FileInputStream(url); return BitmapFactory.decodeStream(fis); // /把流转化为Bitmap图片 } catch (FileNotFoundException e) { e.printStackTrace(); return null; } } public static String size(long size) { if (size / (1024 * 1024) > 0) { float tmpSize = (float) (size) / (float) (1024 * 1024); DecimalFormat df = new DecimalFormat("#.##"); return "" + df.format(tmpSize) + "MB"; } else if (size / 1024 > 0) { return "" + (size / (1024)) + "KB"; } else return "" + size + "B"; } public static boolean delete(File path) { boolean result = true; if (path.exists()) { if (path.isDirectory()) { for (File child : path.listFiles()) { result &= delete(child); } result &= path.delete(); // Delete empty directory. } if (path.isFile()) { result &= path.delete(); } if (!result) { Log.e(null, "Delete failed;"); } return result; } else { Log.e(null, "File does not exist."); return false; } } }