获得手机内容空间 大小 代码
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 }