安卓StatFs使用
来源:互联网 发布:对网络用语的看法 编辑:程序博客网 时间:2024/05/15 05:06
在存储文件时,为了保证有充足的存储空间大小,通常需要知道系统内部或者sdcard的剩余存储空间大小,这里就需要用到StatFs类。
1. 判断 SDCard 是否存在,并且是否具有可读写权限
/** * 外部存储是否可用 (存在且具有读写权限) * @return */ static public boolean isExternalStorageAvailable() { return Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED); }
2.获取手机系统可用空间大小
/** * 获取手机内部可用空间大小 * @return */ static public long getAvailableInternalMemorySize() { File path = Environment.getDataDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long availableBlocks = stat.getAvailableBlocks(); return availableBlocks * blockSize; }
3.获取手机内部总空间大小
/** * 获取手机内部空间大小 * @return */ static public long getTotalInternalMemorySize() { File path = Environment.getDataDirectory();//Gets the Android data directory StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); //每个block 占字节数 long totalBlocks = stat.getBlockCount(); //block总数 return totalBlocks * blockSize; }
4.获取手机外部可用空间大小、获取手机外部总空间大小
/** * 获取手机外部可用空间大小 * @return */ static public long getAvailableExternalMemorySize() { if (isExternalStorageAvailable()) { File path = Environment.getExternalStorageDirectory();//获取SDCard根目录 StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long availableBlocks = stat.getAvailableBlocks(); return availableBlocks * blockSize; } else { return -1; } } /** * 获取手机外部总空间大小 * @return */ static public long getTotalExternalMemorySize() { if (isExternalStorageAvailable()) { File path = Environment.getExternalStorageDirectory(); //获取SDCard根目录 StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long totalBlocks = stat.getBlockCount(); return totalBlocks * blockSize; } else { return -1; } }
注意: 访问SDCard进行文件读写时:
在AndroidManifest.xml中加入访问SDCard的权限如下:
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
接着我们在使用SDcard进行读写的时候 会用到Environment类下面的几个静态方法:
1:getDataDirectory() 获取到Android中的data数据目录
2:getDownloadCacheDirectory() 获取到下载的缓存目录
3:getExternalStorageDirectory() 获取到外部存储的目录 一般指SDcard
4:getExternalStorageState() 获取外部设置的当前状态 一般指SDcard,
android系统中对于外部设置的状态,比较常用的是 MEDIA_MOUNTED(SDcard存在且可以进行读写) MEDIA_MOUNTED_READ_ONLY (SDcard存在,只可以进行读操作) 当然还有其他的一些状态,可以在文档中进行查找到。
5:getRootDirectory() 获取到Android Root路径
6:isExternalStorageEmulated() 返回Boolean值判断外部设置是否有效
7:isExternalStorageRemovable() 返回Boolean值,判断外部设置是否可以移除
原文地址
http://www.cnblogs.com/zhangs1986/p/3251171.html
- 安卓StatFs使用
- statfs
- statfs
- Android中statfs使用注意事项
- statfs获得硬盘使用情况
- statfs获取硬盘使用情况函数详解
- statfs获得硬盘使用情况 模拟linux命令 df
- statfs获得硬盘使用情况 模拟linux命令 df
- statfs获得硬盘使用情况 模拟linux命令 df
- Android中使用正确参数构建StatFs对象
- statfs获得硬盘使用情况 模拟linux命令 df
- statfs获得磁盘使用情况 模拟linux命令 打印比较
- Linux下使用fstatfs/statfs查询系统相关信息
- 安卓 setContentView使用
- 安卓CheckBox使用
- 安卓SeekBar使用
- 安卓使用mqtt
- 安卓---JNI使用
- HDU3518-Boring counting
- hdu 2639 Bone Collector II (背包的第K优解)
- 编译原理作业1,2
- Atitit 代理CGLIB 动态代理 AspectJ静态代理区别
- uCOS-II任务管理之改变任务的优先级
- 安卓StatFs使用
- [转载]Graph cut入门学习
- Android学习之Fragment
- jvm下的栈、堆、方法区和常量池的存储机制
- 汇编各种中断
- 静态库、动态库,dll文件、lib文件,隐式链接、显式链接浅见
- 【随记 css+js 开发】带进度条和数字的动画加载页开发
- Quote
- 推荐5个值得学习React Native的开源项目