SDCard工具類SDCardUtils

版權聲明:本文爲Mr.release原創文章,轉載請標明出處

封裝SDCard工具類 SDCardUtils

public class SDCardUtils {
    /**
     * 獲取SD卡的狀態
     */
    public static String getState() {
        return Environment.getExternalStorageState();
    }


    /**
     * SD卡是否可用
     *
     * @return 只有當SD卡已經安裝並且準備好了才返回true
     */
    public static boolean isAvailable() {
        return getState().equals(Environment.MEDIA_MOUNTED);
    }


    /**
     * 獲取SD卡的根目錄
     *
     * @return null:不存在SD卡
     */
    public static File getRootDirectory() {
        return isAvailable() ? Environment.getExternalStorageDirectory() : null;
    }


    /**
     * 獲取SD卡的根路徑
     *
     * @return null:不存在SD卡
     */
    public static String getRootPath() {
        File rootDirectory = getRootDirectory();
        return rootDirectory != null ? rootDirectory.getPath() : null;
    }

    /**
     * 獲取sd卡路徑
     *
     * @return Stringpath
     */
    public static String getSDPath() {
        File sdDir = null;
        boolean sdCardExist = Environment.getExternalStorageState()
                .equals(Environment.MEDIA_MOUNTED);   //判斷sd卡是否存在
        if (sdCardExist) {
            sdDir = Environment.getExternalStorageDirectory();//獲取跟目錄
        }
        return sdDir.toString();
    }

    /**
     * 獲取空閒的空間大小
     * @return  空間大小
     */
    public static long getFreeSpaceBytes() {
        long freeSpaceBytes;
        final StatFs statFs = new StatFs(getSDPath());
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
            freeSpaceBytes = statFs.getAvailableBytes();
        } else {
            //noinspection deprecation
            freeSpaceBytes = statFs.getAvailableBlocks() * (long) statFs.getBlockSize();
        }

        return freeSpaceBytes;
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章