您的位置:首页 > 移动开发 > Android开发

Android复习练习五(获取sd卡存储空间状态)

2014-08-28 01:13 555 查看
需求:写一个Activity来获取当前手机的SD卡的空间状态,总大小和可用大小,显示在屏幕上

除了判断空间之外,在此之前很可能还需要判断当前手机是否包含sd卡,可以使用下面语句来做判断条件:

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
	//对应操作
}


判断sd卡的容量经常会用到,基本每次需要往sd卡里放数据时都应当判断一下当前sd卡的空间是否够用。没有什么太多需要注意的,代码如下:

package com.alexchen.getsizeofsdcard;

import java.io.File;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.text.format.Formatter;
import android.widget.TextView;

public class MainActivity extends Activity {
	// 需求:在界面上显示当前手机sd卡的总空间和总可用空间

	private TextView tvAll;
	private TextView tvAvailable;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		tvAll = (TextView) findViewById(R.id.tv_sizeofall);
		tvAvailable = (TextView) findViewById(R.id.tv_sizeofavailable);

		// 1.首先获取sd卡的目录文件
		File fileDir = Environment.getExternalStorageDirectory();

		// 2.获取sd卡目录的StatFs对象
		// StatFs:Retrieve overall information about the space on a filesystem.
		// This is a Wrapper for Unix statfs().
		StatFs statFs = new StatFs(fileDir.getPath());

		// 3.由statfs对象可以获取当前目录(sd卡目录)的块区大小,总块区数和可用块区数
		int blockSizeLong = statFs.getBlockSize();
		int availableBlocksLong = statFs.getAvailableBlocks();
		int blockCountLong = statFs.getBlockCount();

		// 4.通过Formatter.formatFileSize方法来获取空间大小的描述,GB/MB/KB等
		String totalSize = Formatter.formatFileSize(this,
				(long) (blockSizeLong * blockCountLong));
		String availableSize = Formatter.formatFileSize(this,
				(long) (blockSizeLong * availableBlocksLong));
		tvAll.setText("SD卡总空间为:"+totalSize);
		tvAvailable.setText("SD卡可用空间为:"+availableSize);
	}

}


显示效果如图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐