android.os下的StatFs类主要用来获取文件系统的状态,能够获取sd卡的大小和剩余空间,获取系统内部空间也就是/system的大小和剩余空间等等。
      看下读取sd卡的:
Java代码
void readSDCard() { 
        String state = Environment.getExternalStorageState(); 
        if(Environment.MEDIA_MOUNTED.equals(state)) { 
            File sdcardDir = Environment.getExternalStorageDirectory(); 
            StatFs sf = new StatFs(sdcardDir.getPath()); 
            long blockSize = sf.getBlockSize(); 
            long blockCount = sf.getBlockCount(); 
            long availCount = sf.getAvailableBlocks(); 
            Log.d("", "block大小:"+ blockSize+",block数目:"+ blockCount+",总大小:"+blockSize*blockCount/1024+"KB"); 
            Log.d("", "可用的block数目::"+ availCount+",剩余空间:"+ availCount*blockSize/1024+"KB"); 
        }    
    } 
       然后看下读取系统内部空间的:
Java代码
void readSystem() { 
        File root = Environment.getRootDirectory(); 
        StatFs sf = new StatFs(root.getPath()); 
        long blockSize = sf.getBlockSize(); 
        long blockCount = sf.getBlockCount(); 
        long availCount = sf.getAvailableBlocks(); 
        Log.d("", "block大小:"+ blockSize+",block数目:"+ blockCount+",总大小:"+blockSize*blockCount/1024+"KB"); 
        Log.d("", "可用的block数目::"+ availCount+",可用大小:"+ availCount*blockSize/1024+"KB"); 
    } 
       StatFs获取的都是以block为单位的,这里我解释一下block的概念:
1.硬件上的 block size, 应该是"sector size",linux的扇区大小是512byte
2.有文件系统的分区的block size, 是"block size",大小不一,可以用工具查看
3.没有文件系统的分区的block size,也叫“block size”,大小指的是1024 byte
4.Kernel buffer cache 的block size, 就是"block size",大部分PC是1024
5.磁盘分区的"cylinder size",用fdisk 可以查看。
      我们这里的block size是第二种情况,一般SD卡都是fat32的文件系统,block size是4096.
      这样就可以知道手机的内部存储空间和sd卡存储空间的总大小和可用大小了。

更多相关文章

  1. 简单明了 的java、android线程池
  2. Android中使用NavigationView实现抽屉侧滑效果中Menu菜单栏设置
  3. Android获取内部和外部内存空间大小
  4. Android中调用Paint的measureText()方法取得字符串显示的宽度值
  5. [转]Android中Spannable的使用
  6. Android(安卓)处理OnItemClickListener时关于焦点颜色的设置问题
  7. Unable to get buffer of resource asset file
  8. Android(安卓)adb方式获取手机总内存和可用内存信息
  9. Android读取手机文件列表

随机推荐

  1. Android(安卓)开机启动App
  2. Android通过图片名字获得ID
  3. 安装android studio 不能启动
  4. android 自定义View 对话框
  5. Android(安卓)Http通信(使用 标准Java接
  6. android kill package
  7. Android菜单实现两种方式
  8. Android(安卓)开发之JNI学习笔记
  9. android中Json数据保存方式
  10. android xml属性的单位大全