我想以编程方式获取设备内部/外部存储空闲内存的大小.我正在使用这段代码:
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount();
long megAvailable = bytesAvailable / 1048576;
Log.e("","Available MB : "+megAvailable);
File path = Environment.getDataDirectory();
StatFs stat2 = new StatFs(path.getPath());
long blockSize = stat2.getBlockSize();
long availableBlocks = stat2.getAvailableBlocks();
String format = Formatter.formatFileSize(this, availableBlocks * blockSize);
Log.e("","Format : "+format);
Run Code Online (Sandbox Code Playgroud)
而我得到的结果是:
11-15 10:27:18.844: E/(25822): Available MB : 7572
11-15 10:27:18.844: E/(25822): Format : 869MB
Run Code Online (Sandbox Code Playgroud)
问题是我想获得1,96GB现在的SdCard的免费记忆.如何修复此代码,以便获得免费大小?
据我所知,在Android上,有:
我如何获得每个的总数和可用性,并检查它们是否存在(某些手机没有内部SD卡)
谢谢
我正在尝试获取总内存 (RAM) 和内部存储大小,但我使用的每种方法都报告它太低。我知道内核可能会占用其中的一些,但我需要知道总共安装了多少。
对于内存,我首先从 /proc/meminfo/ 读取,然后使用getMemoryInfo. 每个报告都小于安装的内存量(700MB 而不是 1GB)。
对于我使用的内部存储大小Environment.getDataDirectory,getBlockSizeLong和getBlockCountLong. 这样做的结果远低于我所知道的已安装的存储量。操作系统中的设置与我的方法报告的数量一致,但我需要知道安装的总量,而不仅仅是它认为的数量(即使我输入它在我脑海中听起来违反直觉)。
编辑:正如我所说,我已经查看了正在发送的问题并尝试了他们的方法。与我所知道的安装情况相比,报告的值不正确。
我们如何处理低设备内存(内部/外部存储器)上的文件保存.我知道如果没有足够的空间,操作系统将抛出IOException,但有没有办法优雅地处理它.
我正在尝试使用以下代码获取内部存储详细信息(用作内部存储器的存储).
public void getinternalstorage() {
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
double bytesavalible = (double) stat.getBlockSizeLong() * (double) stat.getAvailableBlocksLong();
final double gb = bytesavalible / (1024 * 1024 * 1024);
double total = (double) stat.getBlockSizeLong() * stat.getBlockCountLong();
final double totalgb = total / (1024 * 1024 * 1024);
final double per = (100 - (gb / totalgb) * 100);
update_inte((int) (per * 1), round(totalgb, 2), round((gb), 2));
TextView text2written = (TextView) findViewById(R.id.inter);
text2written.setText(String.valueOf(round((totalgb - gb), 2)) + " GB " + …Run Code Online (Sandbox Code Playgroud)