android获得sdcard大小及使用情况信息详解编程语言

代码取自小米的文件管理器

public static class SDCardInfo { 
    public long total; 
 
    public long free; 
} 
 
public static SDCardInfo getSDCardInfo() { 
    String sDcString = android.os.Environment.getExternalStorageState(); 
 
    if (sDcString.equals(android.os.Environment.MEDIA_MOUNTED)) { 
        File pathFile = android.os.Environment.getExternalStorageDirectory(); 
 
        try { 
            android.os.StatFs statfs = new android.os.StatFs(pathFile.getPath()); 
 
            // 获取SDCard上BLOCK总数 
            long nTotalBlocks = statfs.getBlockCount(); 
 
            // 获取SDCard上每个block的SIZE 
            long nBlocSize = statfs.getBlockSize(); 
 
            // 获取可供程序使用的Block的数量 
            long nAvailaBlock = statfs.getAvailableBlocks(); 
 
            // 获取剩下的所有Block的数量(包括预留的一般程序无法使用的块) 
            long nFreeBlock = statfs.getFreeBlocks(); 
 
            SDCardInfo info = new SDCardInfo(); 
            // 计算SDCard 总容量大小MB 
            info.total = nTotalBlocks * nBlocSize; 
 
            // 计算 SDCard 剩余大小MB 
            info.free = nAvailaBlock * nBlocSize; 
 
            return info; 
        } catch (IllegalArgumentException e) { 
            Log.e(LOG_TAG, e.toString()); 
        } 
    } 
 
    return null; 
} 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/10399.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论