Android 如何获取设备的总内部存储空间

Android 如何获取设备的总内部存储空间,android,Android,我正在尝试获取设备的总内部存储量,比如用户存储和设备存储。我可以使用此代码获取内部设备存储 final File path = Environment.getDataDirectory(); StatFs stat = new StatFs(path.getPath()); long bytesAvailable = (long)stat.getBlockSize() * (long)stat.getBlockCount(); long megAvailable = by

我正在尝试获取设备的总内部存储量,比如用户存储和设备存储。我可以使用此代码获取内部设备存储

final File path = Environment.getDataDirectory();
    StatFs stat = new StatFs(path.getPath());
    long bytesAvailable = (long)stat.getBlockSize() * (long)stat.getBlockCount();
    long megAvailable = bytesAvailable / 1048576;

但问题是,在我的设备中,我有16GB的内存,结果是11GB。它不显示系统内存(操作系统存储的位置)。

您可以像下面那样使用它

StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long sdAvailSize = (long)stat.getAvailableBlocks() * (long)stat.getBlockSize();
long gigaAvailable = sdAvailSize / 1073741824;
bytesToHuman可以从

公共静态字符串floatForm(双d)
{
返回新的十进制格式(“#.###”)。格式(d);
}
公共静态字符串bytesToHuman(长)
{
长Kb=1*1024;
长Mb=Kb*1024;
长Gb=Mb*1024;
长Tb=Gb*1024;
长Pb=Tb*1024;
长Eb=Pb*1024;
if(size=Kb&&size=Mb&&size=Gb&&size=Tb&&size=Pb&&size=Eb)返回floatForm((双)大小/Eb)+“Eb”;
返回“?”;
}

我的代码和你的代码有什么区别?两者都是相似的人我已经这么做了你厌倦了这个答案吗?是的,它与我的代码相似我已经这么做了你能看到我的代码吗?这和我的代码一样。请检查第一个问题,然后回答。
 public static String getAvailableInternalMemorySize() {
        File path = Environment.getDataDirectory();
        StatFs stat = new StatFs(path.getPath());
        long blockSize = stat.getBlockSize();
        long availableBlocks = stat.getAvailableBlocks();
        return bytesToHuman(availableBlocks * blockSize);
    }
    public static String floatForm (double d)
    {
        return new DecimalFormat("#.##").format(d);
    }


    public static String bytesToHuman(long size)
    {
        long Kb = 1  * 1024;
        long Mb = Kb * 1024;
        long Gb = Mb * 1024;
        long Tb = Gb * 1024;
        long Pb = Tb * 1024;
        long Eb = Pb * 1024;

        if (size <  Kb)                 return floatForm(        size     ) + " byte";
        if (size >= Kb && size < Mb)    return floatForm((double)size / Kb) + " KB";
        if (size >= Mb && size < Gb)    return floatForm((double)size / Mb) + " MB";
        if (size >= Gb && size < Tb)    return floatForm((double)size / Gb) + " GB";
        if (size >= Tb && size < Pb)    return floatForm((double)size / Tb) + " TB";
        if (size >= Pb && size < Eb)    return floatForm((double)size / Pb) + " PB";
        if (size >= Eb)                 return floatForm((double)size / Eb) + " EB";

        return "???";
    }