Android_获取手机上SD卡和内存中的可用空间的大小

本文介绍了如何在Android中获取SD卡和内存的可用空间大小。通过指定路径创建StatFs对象,利用getBlockCount()和getAvailableBlocks()方法计算可用空间,并进行格式化显示。

一.写一个根据路径获取摸个目录的可用空间的方法(也可以分区的个数*分区的大小获得该目录的总的空间大小)

        /**
	 * 根据路劲获取某个目录的可用空间
	 * 
	 * @param path
	 *            文件的路径
	 * @return result 返回该目录的可用空间大小
	 */
	private long getAvailSpace(String path) {
		StatFs statFs = new StatFs(path);

		statFs.getBlockCount();// 获取分区的个数
		int size = statFs.getBlockSize();// 获取分区的大小
		int blocks = statFs.getAvailableBlocks();// 获取可用分区的个数

		long result = blocks * size;
		return result;
	}

二.获取得到的空间的大小是long类型的

                // sd卡上可用空间的大小
		long sdsize = getAvailSpace(Environment.getExternalStorageDirectory()
				.getAbsolutePath());
		// 手机内存中可用空间的大小
		long romsize = getAvailSpace(Environment.getDataDirectory()
				.getAbsolutePath());
		Log.i(TAG, "SD卡上可用的空间为:" + sdsize + "手机内存中可用空间为:" + romsize);


三.格式化一下获得的数据,显示到界面上

		// 把获取到的sd卡上和手机内存中可用空间的大小显示在界面中
		// Formatter.formatFileSize()——一个区域化的文件大小格式化工具。
		tv_avail_sd.setText("SD卡可用:"
				+ Formatter.formatFileSize(AppManagerActivity.this, sdsize));
		tv_avail_rom.setText("内存可用:"
				+ Formatter.formatFileSize(AppManagerActivity.this, romsize));



个人总结记忆:

要获取某个空间的大小,首先要知道该空间的具体位置(path),根据path找到该空间(new StatFs(path)),因为硬盘是扇形分区,每个分区上有柱头的,所以可以根据该空间(statFs)得到每个分区的大小(getBlockSize()),还有分区的个数(getBlockCount()),以及可用分区的个数(getAvailableBlocks()),最后根据各种算式就能得到相应的大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值