博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android系统容量检测 —— Environment 和StatFs
阅读量:4358 次
发布时间:2019-06-07

本文共 1553 字,大约阅读时间需要 5 分钟。

 当下载或安装一个文件之前,往往会比较关心当前系统内存和SD卡上的剩余容量。在做文件拷贝,移动操作时,检测目标目录的空间大小也是必须的。

  Android系统提供了Environment 和StatFs两个类,来实现对容量的检测。下面是一些相关的方法。

  Environment:

    getDataDirectory(): 获取应用存储空间文件对象。

    getExternalStorageDirectory(): 获取SD卡文件对象。

    getRootDirectory(): 获取系统空间文件对象。

  StatFs: 

    getBlockCount(): 获取存储块数量。

    getAvailableBlocks(): 获取存储块数量。

    getBlockSize(): 获取存储块大小。

 

  因为Android是基于Linux系统的,所以其没有盘符的概念,而且是以存储块来存储数据。所以获得容量的正确方式为:

  1. 通过Environment获取需要检测容量的文件对象。

  2. 构建StatFs对象。

  3. 获取存储块数量。

  4. 获取存储块大小。

  5. 计算得出容量大小。

  需要注意的是,通过getBlockSize()方法获取出来的值,是以字节做单位。

 

  下面是一个获取容量大小的简单示例:

1 public class MainActivity extends Activity {
2 private String TAG = "Status"; 3 @Override 4 public void onCreate(Bundle savedInstanceState) {
5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.main); 7 8 9 File data = Environment.getDataDirectory(); 10 StatFs sf = new StatFs(data.getPath()); 11 int availableBlocks = sf.getAvailableBlocks(); 12 Log.d(TAG, "可用存储块数量:" + availableBlocks); 13 int blockCount = sf.getBlockCount(); 14 Log.d(TAG, "总存储块数量:" + blockCount); 15 int size = sf.getBlockSize(); 16 Log.d(TAG, "存储块大小:" + size + "字节"); 17 int totalSize = blockCount * size; 18 Log.d(TAG, "总空间:" + totalSize + "字节"); 19 int availableSize = availableBlocks * size; 20 Log.d(TAG, "可用空间:" + availableSize + "字节"); 21 22 } 23 }

  运行结果如下:

 

转载于:https://www.cnblogs.com/simpleceo/archive/2012/04/25/2469143.html

你可能感兴趣的文章
浏览器好用的技术
查看>>
HDU 2188------巴什博弈
查看>>
tp5任务队列使用supervisor常驻进程
查看>>
Xmind?
查看>>
spring+quartz 实现定时任务三
查看>>
day2-三级菜单
查看>>
linux下升级4.5.1版本gcc
查看>>
Beanutils
查看>>
FastJson
查看>>
excel4j
查看>>
Thread
查看>>
char * 与char []探究理解
查看>>
QT窗体显示在屏幕中间位置
查看>>
emmet使用技巧
查看>>
RPC-Thrift(二)
查看>>
MSSQL for Linux 安装指南
查看>>
【Golang 接口自动化08】使用标准库httptest完成HTTP请求的Mock测试
查看>>
前端必读:浏览器内部工作原理
查看>>
Uri、URL和URN三者的区别
查看>>
数据字典的转换
查看>>