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 "???";
}