AndroidTools: 系統工具--讀取存儲空間

Android Tools Git地址: https://github.com/wisesun7/AndroidTools.git

    本篇提供獲取整機存儲空間的方法,通過StatFs獲取BlockCount和BlockSize計算各種空間。分別可獲取當前剩餘空間,系統佔用空間,及Data分區的總空間,那麼已用空間就可用總空間減去剩餘空間得到。
    需要注意的是,這裏的剩餘可用、系統佔用和總空間之間沒有累計和絕對相等的關係,一般廠商會把總空間直接定義成固定值,而將剩餘空間和系統佔用空間用此方法獲取真實值,然後通過【固定值-真實值】的方式展示已用空間。 這樣做的好處是用戶看到的總空間會和規格書中顯示的一致,而剩餘空間使用的是真實值,因此,在使用上也不會出現顯示與實際使用不對應的關係。

/**
     * 獲取當前可用空間
     * @return
     */
    public static float getAvailableSpace() {
        File file = Environment.getDataDirectory();
        StatFs sf = new StatFs(file.getPath());
        long blocks = sf.getAvailableBlocksLong();
        long blockSpace = sf.getBlockSizeLong();
        float space = (blocks * blockSpace * 1.0f) / (1024 * 1024 * 1024);
        Log.d(TAG, "getAvailableSpace: " + Math.round(space * 100) / 100);
        return (float) Math.round(space * 100) / 100;
    }

    /**
     * 獲取系統佔用空間
     * @return
     */
    public static float getSystemSpace() {
        File file = Environment.getRootDirectory();
        StatFs sf = new StatFs(file.getPath());
        long blocks = sf.getAvailableBlocksLong();
        long blockSpace = sf.getBlockSizeLong();
        float space = (blocks * blockSpace * 1.0f) / (1024 * 1024 * 1024);
        Log.d(TAG, "getAvailableSpace: " + Math.round(space * 100) / 100);
        return (float) Math.round(space * 100) / 100;
    }


    /**
     * 獲取總空間(不包含系統佔用)
     * @param context
     * @return
     */
    public static long getRomTotalSize(Context context) {
        File rom = Environment.getDataDirectory();
        StatFs statFs = new StatFs(rom.getPath());
        long totalSpace = statFs.getTotalBytes();
        return totalSpace;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章