2、讲述 StatFs 类
StatFs 一个模拟linux的df命令的一个类,获得SD卡和手机内存的使用情况
StatFs 常用方法:

getAvailableBlocks()
解释:返回 Int ,获取当前可用的存储空间
getBlockCount()
解释:返回 Int ,获取该区域可用的文件系统数
getBlockSize()
解释:返回 Int ,大小,以字节为单位,一个文件系统
getFreeBlocks()
解释:返回 Int ,该块区域剩余的空间
restat(String path)
解释:执行一个由该对象所引用的文件系统

3、完整例子读取 SDCard 内存
存储卡在 Android 手机上是可以随时插拔的,每次的动作都对引起操作系统进行 ACTION_BROADCAST,本例子将使用上面学到的方法,计算出 SDCard 的剩余容量和总容量。代码如下:

1.package com.demo
2.
3.import java.io.File;
4.import java.text.DecimalFormat;
5.
6.import android.R.integer;
7.import android.app.Activity;
8.import android.os.Bundle;
9.import android.os.Environment;
10.import android.os.StatFs;
11.import android.view.View;
12.import android.view.View.OnClickListener;
13.import android.widget.Button;
14.import android.widget.ProgressBar;
15.import android.widget.TextView;
16.import android.widget.Toast;
17.
18.public
19.class getStorageActivity extends Activity {
20. private Button myButton;
21. /** Called when the activity is first created. */
22. @Override
23. public
24.void onCreate(Bundle savedInstanceState) {
25. super.onCreate(savedInstanceState);
26. setContentView(R.layout.main);
27. findView();
28. viewHolder.myButton.setOnClickListener(new OnClickListener() {
29.
30. @Override
31. public
32.void onClick(View arg0) {
33. // TODO Auto-generated method stub
34. getSize();
35. }
36. });
37. }
38.
39.
40. void findView(){
41. viewHolder.myButton=(Button)findViewById(R.id.Button01);
42. viewHolder.myBar=(ProgressBar)findViewById(R.id.myProgressBar);
43. viewHolder.myTextView=(TextView)findViewById(R.id.myTextView);
44. }
45.
46.
47.
48. void getSize(){
49. viewHolder.myTextView.setText("");
50. viewHolder.myBar.setProgress(0);
51. //判断是否有插入存储卡
52.
53.if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
54. File path =Environment.getExternalStorageDirectory();
55. //取得sdcard文件路径
56. StatFs statfs=new StatFs(path.getPath());
57. //获取block的SIZE
58.
59.long blocSize=statfs.getBlockSize();
60. //获取BLOCK数量
61.
62.long totalBlocks=statfs.getBlockCount();
63. //己使用的Block的数量
64.
65.long availaBlock=statfs.getAvailableBlocks();
66.
67. String[] total=filesize(totalBlocks*blocSize);
68. String[] availale=filesize(availaBlock*blocSize);
69. //设置进度条的最大值
70.
71.int maxValue=Integer.parseInt(availale[0])
72. *viewHolder.myBar.getMax()/Integer.parseInt(total[0]);
73. viewHolder.myBar.setProgress(maxValue);
74. String Text="总共:"+total[0]+total[1]+"\n"
75.+"可用:"+availale[0]+availale[1];
76. viewHolder.myTextView.setText(Text);
77.
78. }else
79.if(Environment.getExternalStorageState().equals(Environment.MEDIA_REMOVED)){
80. Toast.makeText(getStorageActivity.this, "没有sdCard", 1000).show();
81. }
82. }
83.
84. //返回数组,下标1代表大小,下标2代表单位 KB/MB
85. String[] filesize(long size){
86. String str="";
87. if(size>=1024){
88. str="KB";
89. size/=1024;
90. if(size>=1024){
91. str="MB";
92. size/=1024;
93. }
94. }
95. DecimalFormat formatter=new DecimalFormat();
96. formatter.setGroupingSize(3);
97. String result[] =new String[2];
98. result[0]=formatter.format(size);
99. result[1]=str;
100. return result;
101. }
102.}

更多相关文章

  1. cocos2d-x在android中响应返回键编译报错的bug分析
  2. 热修复
  3. Android(安卓)应用跳转到指定QQ临时聊天界面
  4. 关于android WebViewClient 的方法解释
  5. android之PackageManager简介
  6. [Android]根据名称name来获取string的值
  7. Android: SDCard容量计算
  8. Android事件分发机制的探索与发现之ViewGroup篇
  9. Android(安卓)项目如何获取MD5和SHA1

随机推荐

  1. android json httppost方式联网
  2. Android富文本图文混排、粗体、斜体、图
  3. android弹出下拉选择菜单,单选,多选
  4. android c和java代码中获取配置属性
  5. android如何取消闹铃
  6. Android source code[ 源代码]下载,问题和
  7. Android Studio 多渠道打包遇到的问题总
  8. Android自定义控件之自定义进度条
  9. android 使用命令模拟点击 滑动
  10. Android 常用抓包工具介绍之Charles