要获取文件系统的信息,必须了解Environment类与StatFs类。
1. android.os.Environment类主要是一个提供访问环境变量的类。
主要方法如下:
方法 | 解释 | |
---|---|---|
1 | getDataDirectory() | 返回 File ,获取 Android 数据目录 |
2 | getRootDirectory() | 返回 File ,获取 Android 的根目录 |
3 | getExternalStorageDirectory() | 返回 File ,获取外部存储目录即 SDCard |
4 | getExternalStorageState() | 返回 File ,获取外部存储设备的当前状态 |
5 | getDownloadCacheDirectory() | 返回 File ,获取 Android 下载/缓存内容目录 |
2. android.os.StatFs类主要是模拟Linux的df命令。
主要方法如下:
方法 | 解释 | |
---|---|---|
1 | getAvailableBlocks() | 返回int,获取当前系统可用存储空间的Block数 |
2 | getBlockCount() | 返回int,获取当前系统存储空间总的Block数 |
3 | getBlockSize() | 返回int,获取当前系统Block占的大小 |
4 | getFreeBlocks() | 返回int,该块区域剩余的空间 |
主要代码如下:
private String getTotalRom(){
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
float totalsize = totalBlocks * blockSize/1024f/1024f/1024f;
String mSizeStr = new DecimalFormat("##.###").format(totalsize);
return (String.valueOf(mSizeStr) + " GB");
}
private String getInSDCard(){
StatFs localStatFs = new StatFs(inSDPath);
long blockCount = localStatFs.getBlockCount();
long blockSize = localStatFs.getBlockSize();
float totalsize = blockCount*blockSize/1024f/1024f/1024f;
String mSizeStr = new DecimalFormat("##.###").format(totalsize);
return mSizeStr+" GB";
}