获得手机内容空间 大小 代码
1 public class MainActivity extends Activity { 2 3 4 private TextView tv_01; 5 @Override 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.activity_main); 9 10 tv_01 = (TextView) findViewById(R.id.tv_01); 11 12 // 得到 SD卡的信息 13 // Environment.getExternalStorageDirectory() 返回路径 /mnt/sdcard 14 File sdcardFileDir = Environment.getExternalStorageDirectory(); 15 String SDmemory = getMemory(sdcardFileDir); 16 17 // 得到 手机内部存储空间 18 // Environment.getDataDirectory() 返回路径 /data 19 File dataFileDir = Environment.getDataDirectory(); 20 String dataMemory = getMemory(dataFileDir); 21 22 tv_01.setText("SD卡 "+SDmemory+"\n手机内部 "+dataMemory); 23 } 24 25 26 public String getMemory(File path){ 27 28 // path.getPath() 返回 该 文件的路径 29 // 获得 该路径下 磁盘状态 30 // statFs 检索文件系统的整个信息空间 31 StatFs stat = new StatFs(path.getPath()); 32 // 获得 每个扇区的带大小 33 34 // 在较高版本的 系统中 提示 getBlockSize 过时,需要使用getBlockSizeLong()下面的方法类似 35 // 但是如果在低版本的系统中 使用 getBlockSizeLong() 可能会出现编译错误 36 long blockSize = stat.getBlockSize(); 37 // 获得总共有多少个扇区 38 long totalBlocks = stat.getBlockCount(); 39 // 获得 可用扇区 40 long avaiableBlocks = stat.getAvailableBlocks(); 41 42 //总空间 43 44 String totalMemory = Formatter.formatFileSize(this, blockSize * totalBlocks); 45 46 // 可用空间 47 48 String avaiableMemory = Formatter.formatFileSize(this, totalBlocks*avaiableBlocks); 49 50 return "总空间:"+totalMemory+"\n"+"可用空间:"+avaiableMemory; 51 } 52 53 }