Android获取内置SD卡的大小

废话不多说,先上代码:

     /**
     * 获取手机内部空间大小
     * @return
     */
    public static double getTotalInternalStorgeSize() {
        File path = Environment.getExternalStorageDirectory();
        StatFs mStatFs = new StatFs(path.getPath());
        long blockSize = mStatFs.getBlockSize();
        long totalBlocks = mStatFs.getBlockCount();
        DecimalFormat df = new DecimalFormat("#.00");
        // 这里忽略至小数点后两位,不做四舍五入
        return Double.valueOf(df.format(((totalBlocks * blockSize) / 1024.0 / 1024.0 / 1024.0)));
    }
    /**
     * 获取手机内部可用空间大小
     * @return
     */
    public static double getAvailableInternalStorgeSize() {
        File path = Environment.getExternalStorageDirectory();
        StatFs mStatFs = new StatFs(path.getPath());
        long blockSize = mStatFs.getBlockSize();
        long availableBlocks = mStatFs.getAvailableBlocks();
        DecimalFormat df = new DecimalFormat("#.00");
        // 这里忽略至小数点后两位,不做四舍五入
        return Double.valueOf(df.format(((availableBlocks * blockSize) / 1024.0 / 1024.0 / 1024.0)));
    }

 

网上搜的很多文章发现计算出来的存储空间大小总是偏大,经过一位大神的指点发现是文件的路径有问题,网上搜的很多文章的文件路径为:

    // 这个路径下可能存有系统某些文件,导致计算获得的存储空间偏大
    String path=Environment.getDataDirectory();

而注意上面我写的代码,文件路径为:

    File path = Environment.getExternalStorageDirectory();

 

发布了8 篇原创文章 · 获赞 9 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览