android中的StatFs类

来源:互联网 发布:山东省进出口数据 编辑:程序博客网 时间:2024/06/04 23:42
StatFs一个模拟linux的df命令的一个类,获得SD卡和手机内存的使用情况

             StatFs常用方法:

Java代码:
  1. getAvailableBlocks()
  2. 解释:返回 Int ,获取当前可用的存储空间
  3. getBlockCount()
  4. 解释:返回 Int ,获取该区域可用的文件系统数
  5. getBlockSize()
  6. 解释:返回 Int ,大小,以字节为单位,一个文件系统
  7. getFreeBlocks()
  8. 解释:返回 Int ,该块区域剩余的空间
  9. restat(String path)
  10. 解释:执行一个由该对象所引用的文件系统
复制代码

             完整例子读取 SDCard内存

Java代码:

  1. package com.terry;

  2. import java.io.File;
  3. import java.text.DecimalFormat;
  4. import android.R.integer;
  5. import android.app.Activity;
  6. import android.os.Bundle;
  7. import android.os.Environment;
  8. import android.os.StatFs;
  9. import android.view.View;
  10. import android.view.View.OnClickListener;
  11. import android.widget.Button;
  12. import android.widget.ProgressBar;
  13. import android.widget.TextView;
  14. import android.widget.Toast;

  15. public class getStorageActivity extends Activity {

  16. private Button myButton;



  17. @Override
  18. public void onCreate(Bundle savedInstanceState) {

  19. super.onCreate(savedInstanceState);

  20. setContentView(R.layout.main);

  21. findView();

  22. viewHolder.myButton.setOnClickListener(new OnClickListener(){

  23. @Override
  24. public void onClick(View arg0) {

  25. // TODO Auto-generated method stub

  26. getSize();

  27. }

  28. });

  29. }

  30. void findView(){

  31. viewHolder.myButton=(Button)findViewById(R.id.Button01);

  32. viewHolder.myBar=(ProgressBar)findViewById(R.id.myProgressBar);

  33. viewHolder.myTextView=(TextView)findViewById(R.id.myTextView);

  34. }

  35. void getSize(){

  36. viewHolder.myTextView.setText("");

  37. viewHolder.myBar.setProgress(0);

  38. //判断是否有插入存储卡

  39. if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

  40. File path=Environment.getExternalStorageDirectory();

  41. //取得sdcard文件路径

  42. StatFs statfs=new StatFs(path.getPath());

  43. //获取block的SIZE

  44. long blocSize=statfs.getBlockSize();

  45. //获取BLOCK数量

  46. long totalBlocks=statfs.getBlockCount();

  47. //己使用的Block的数量

  48. long availaBlock=statfs.getAvailableBlocks();

  49. String[] total=filesize(totalBlocks*blocSize);

  50. String[] availale=filesize(availaBlock*blocSize);

  51. //设置进度条的最大值

  52. int maxValue=Integer.parseInt(availale[0])

  53. *viewHolder.myBar.getMax()/Integer.parseInt(total[0]);

  54. viewHolder.myBar.setProgress(maxValue);

  55. StringText="总共:"+total[0]+total[1]+"\n"+"可用:"+availale[0]+availale[1];

  56. viewHolder.myTextView.setText(Text);

  57. }

  58. elseif(Environment.getExternalStorageState().equals(Environment.MEDIA_REMOVED)){

  59. Toast.makeText(getStorageActivity.this, "没有sdCard",1000).show();

  60. }

  61. }

  62. //返回数组,下标1代表大小,下标2代表单位 KB/MB

  63. String[] filesize(long size){

  64. String str="";

  65. if(size>=1024){

  66. str="KB";

  67. size/=1024;

  68. if(size>=1024){

  69. str="MB";

  70. size/=1024;

  71. }

  72. }

  73. DecimalFormat formatter=new DecimalFormat();

  74. formatter.setGroupingSize(3);

  75. String result[] =new String[2];

  76. result[0]=formatter.format(size);

  77. result[1]=str;

  78. return result;

  79. }

  80. }