多语言展示
当前在线:1605今日阅读:27今日分享:41

安卓APP开发如何获取SDCard的容量大小剩余空间

安卓APP开发中,我们经常需要知道SDCard的总容量,剩余空间等等相关信息。比如说:在下载文件操作之前,将HTTP响应头读出来的文件数据大小信息与SDCard剩余空间对比。剩余空间不足就提示用户不能下载。如何获取SDCard的容量大小以及剩余空间呢?下面小编带大家编程吧。
工具/原料
1

Eclipse

2

安卓手机,数据线

方法/步骤
1

首先需要大家了解一下关于SDCard的基础知识。SDCard文件系统的信息有:存储块大小,总的存储块数量,可用存储块数量存储设备(这里特指SDCard)会被分为若干个区块,每个区块都有一个最小的单位。例如:Windows操作系统的区块最小单位就是4个字节的。也就是说,如果你的文件不足4字节,也会占用4字节的硬盘空间。

2

下面还需要理解两条计算公式每个区块的大小 * 区块总数 = 存储设备的总大小每个区块的大小 * 可用区块的数量 = 存储设备可用大小

3

下面开始编程:首先创建安卓项目,在主activity中添加以下代码(代码中有详细注释):protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 得到文件系统的信息:存储块大小,总的存储块数量,可用存储块数量 // 获取sd卡空间 // 存储设备会被分为若干个区块 // 每个区块的大小 * 区块总数 = 存储设备的总大小 // 每个区块的大小 * 可用区块的数量 = 存储设备可用大小 File path = Environment.getExternalStorageDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize; long totalBlocks; long availableBlocks; // 由于API18(Android4.3)以后getBlockSize过时并且改为了getBlockSizeLong // 因此这里需要根据版本号来使用那一套API if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { blockSize = stat.getBlockSizeLong(); totalBlocks = stat.getBlockCountLong(); availableBlocks = stat.getAvailableBlocksLong(); } else { blockSize = stat.getBlockSize(); totalBlocks = stat.getBlockCount(); availableBlocks = stat.getAvailableBlocks(); } // 利用formatSize函数把字节转换为用户等看懂的大小数值单位 TextView tv_total = (TextView) findViewById(R.id.tv_total); TextView tv_available = (TextView) findViewById(R.id.tv_available); String totalText = formatSize(blockSize * totalBlocks); String availableText = formatSize(blockSize * availableBlocks); tv_total.setText('SDCard总大小:\n' + totalText); tv_available.setText('SDCard可用空间大小:\n' + availableText); }//封装Formatter.formatFileSize方法,具体可以参考安卓的API private String formatSize(long size) { return Formatter.formatFileSize(this, size); }

4

运行安卓项目,下面给出小编的运行结果,如图所示

注意事项

文章仅供参考,大家多多相互学习分享

推荐信息