Android中StatFs获取系统/sdcard存储(剩余空间)大小

 

packagecom.orgcent.util;

importjava.io.File;

importandroid.os.Environment;
importandroid.os.StatFs;

publicclass MemoryStatus {
    staticfinalint ERROR =-1;

    /**
     * 外部存储是否可用
     * @return
     */
    staticpublicboolean externalMemoryAvailable(){
        return android.os.Environment.getExternalStorageState().equals(
                android.os.Environment.MEDIA_MOUNTED);
    }

    /**
     * 获取手机内部可用空间大小
     * @return
     */
    staticpubliclong getAvailableInternalMemorySize(){
        File path =Environment.getDataDirectory();
        StatFs stat =new StatFs(path.getPath());
        long blockSize = stat.getBlockSize();
        long availableBlocks = stat.getAvailableBlocks();
        return availableBlocks * blockSize;
    }

    /**
     * 获取手机内部空间大小
     * @return
     */
    staticpubliclong getTotalInternalMemorySize(){
        File path =Environment.getDataDirectory();
        StatFs stat =new StatFs(path.getPath());
        long blockSize = stat.getBlockSize();
        long totalBlocks = stat.getBlockCount();
        return totalBlocks * blockSize;
    }

    /**
     * 获取手机外部可用空间大小
     * @return
     */
    staticpubliclong getAvailableExternalMemorySize(){
        if(externalMemoryAvailable()){
            File path =Environment.getExternalStorageDirectory();
            StatFs stat =new StatFs(path.getPath());
            long blockSize = stat.getBlockSize();
            long availableBlocks = stat.getAvailableBlocks();
            return availableBlocks * blockSize;
        }else{
            return ERROR;
        }
    }

    /**
     * 获取手机外部空间大小
     * @return
     */
    staticpubliclong getTotalExternalMemorySize(){
        if(externalMemoryAvailable()){
            File path =Environment.getExternalStorageDirectory();
            StatFs stat =new StatFs(path.getPath());
            long blockSize = stat.getBlockSize();
            long totalBlocks = stat.getBlockCount();
            return totalBlocks * blockSize;
        }else{
            return ERROR;
        }
    }

    staticpublicString formatSize(long size){
        String suffix =null;

        if(size >=1024){
            suffix ="KiB";
            size /=1024;
            if(size >=1024){
                suffix ="MiB";
                size /=1024;
            }
        }

        StringBuilder resultBuffer =new StringBuilder(Long.toString(size));
        int commaOffset = resultBuffer.length()-3;
        while(commaOffset >0){
            resultBuffer.insert(commaOffset, ',');
            commaOffset -=3;
        }

        if(suffix !=null)
            resultBuffer.append(suffix);
        return resultBuffer.toString();
    }
}

你可能感兴趣的:(Android中StatFs获取系统/sdcard存储(剩余空间)大小)