Android:StatFs类 获取系统/sdcard存储空间信息
在存储文件时,为了保证有充足的存储空间大小,通常需要知道系统内部或者sdcard的剩余存储空间大小,这里就需要用到StatFs类。
1. 判断 SDCard 是否存在,并且是否具有可读写权限
/**
* 外部存储是否可用 (存在且具有读写权限)
* @return
*/
staticpublicboolean isExternalStorageAvailable() {
return Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED);
}
/**
* 外部存储是否可用 (存在且具有读写权限)
* @return
*/
static public boolean isExternalStorageAvailable() {
return Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED);
}
2.获取手机系统可用空间大小
/**
* 获取手机内部可用空间大小
* @return
*/
staticpubliclong getAvailableInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
}
/**
* 获取手机内部可用空间大小
* @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
*/
staticpubliclong 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;
}
/**
* 获取手机内部空间大小
* @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
*/
staticpubliclong 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
*/
staticpubliclong 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;
}
}
/**
* 获取手机外部可用空间大小
* @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值,判断外部设置是否可以移除
Android:StatFs类 获取系统/sdcard存储空间信息的更多相关文章
- Android中StatFs获取系统/sdcard存储(剩余空间)大小
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- 使用Calender类获取系统时间和时间和运算
使用Calender类获取系统时间和时间和运算: @Test public void testCal(){ //使用Calender对象获取时间,并对时间进行计算: Calendar instance ...
- Android中Environment与StatFs获取系统/SDCard存储空间大小
近期想起Android开发的知识.好久没有使用了,都忘得几乎相同了,今天查看了一会资料往回捡捡,顺便写下来帮助一下须要的同学. 首先讲述一下Environment与StatFs这两个类,然后介绍它们的 ...
- Android开发之获取系统所有进程信息。
最近在做一个app,有一个进程管理模块用于管理系统中正在运行的进程,并且可以关闭进程进行加速手机的功能,基本把它实现了出来.界面的效果都是自己写的,虽然有BUG,但是基本上能满足需求,后期我会改进BU ...
- Android开发之获取系统版本号
获取系统版本号:获取当前系统的版本号: textView.setText("Product Model: " + android.os.Build.MODEL + ",& ...
- Android DisplayMetrics类获取屏幕大小
DisplayMetrics public class DisplayMetrics extends Object java.lang.Object ↳ android.util.Disp ...
- android studio应用获取系统属性权限(SystemProperties)
dependencies { provided files(getLayoutLibPath()) } /** ZhangChao time:2014-12-31,get layoutlib.jar ...
- Android 获取系统的联系人
本文主要介绍android中怎样获取系统的联系人数据 首先打开模拟器 点击联系人图标按钮 说明系统联系人数据库是空的,打开File explorer,找到data/data下面的文件夹: 将conta ...
- Android 获取系统或SDCARD剩余空间信息(转)
android.os下的StatFs类主要用来获取文件系统的状态,能够获取sd卡的大小和剩余空间,获取系统内部空间也就是/system的大小和剩余空间等等. 看下读取sd卡的:Java代码 ...
随机推荐
- ansible 自动化(3)
批量执行playbooks 远程批量命令执行的另外一种方式是用playbooks:这里是playbooks的官方文档:http://docs.ansible.com/playbooks.html这里有 ...
- Android 环境搭建
一.Android 环境搭建 开发工具: Android Studio(开发工具,前提是先装 java JDK) 下载地址:http://www.androiddevtools.cn/ Oracl ...
- Linux下安装mysql数据库
l 检查是否已安装mysql的相关包 [root@localhost ~]# rpm -qa|grep -i mysql MySQL-server-5.6.19-1.el6.x86_64 MySQL- ...
- Apache Lucene 4.5 发布,Java 搜索引擎
Apache Lucene 4.5 发布了,该版本提供基于磁盘的文档值以及改进了过滤器的缓存.Lucene 4.5 的文档请看这里. Lucene 是apache软件基金会一个开放源代码的全文检索引擎 ...
- 开始VS 2012中LightSwitch系列的第3部分:我该选择哪一个屏幕模板
[原文发表地址] Beginning LightSwitch in VS 2012 Part 3: Screen Templates, Which One Do I Choose? [原文发表时间] ...
- 《JAVA与模式》之抽象工厂模式
场景问题 举个生活中常见的例子——组装电脑,我们在组装电脑的时候,通常需要选择一系列的配件,比如CPU.硬盘.内存.主板.电源.机箱等.为讨论使用简单点,只考虑选择CPU和主板的问题. 事实上,在选择 ...
- [.net 面向对象编程基础] (11) 面向对象三大特性——封装
[.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承. ...
- 自定义路径创建Cocos2d-x项目
自定义路径创建Cocos2d-x项目 本文介绍windows下面如何优雅的创建Cocos2d-x项目.为何称之为优雅,是因为现在网上流传的一些创建方法有一些问题.大致内容如下: l 使用VS向导创建 ...
- Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例
概要 本章,我们对JUC包中的信号量Semaphore进行学习.内容包括:Semaphore简介Semaphore数据结构Semaphore源码分析(基于JDK1.7.0_40)Semaphore示例 ...
- [ACM_几何] F. 3D Triangles (三维三角行相交)
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28235#problem/A 题目大意:给出三维空间两个三角形三个顶点,判断二者是否有公共 ...