java中statfs_Android:StatFs类 获取系统/sdcard存储空间信息

在存储文件时,为了保证有充足的存储空间大小,通常需要知道系统内部或者sdcard的剩余存储空间大小,这里就需要用到StatFs类。

1. 判断 SDCard 是否存在,并且是否具有可读写权限

/**

* 外部存储是否可用 (存在且具有读写权限)

* @return

*/

staticpublicbooleanisExternalStorageAvailable() {

returnEnvironment.getExternalStorageState().equals(

Environment.MEDIA_MOUNTED);

}

/**

* 外部存储是否可用 (存在且具有读写权限)

* @return

*/

static public boolean isExternalStorageAvailable() {

return Environment.getExternalStorageState().equals(

Environment.MEDIA_MOUNTED);

}

2.获取手机系统可用空间大小

/**

* 获取手机内部可用空间大小

* @return

*/

staticpubliclonggetAvailableInternalMemorySize() {

File path = Environment.getDataDirectory();

StatFs stat = newStatFs(path.getPath());

longblockSize = stat.getBlockSize();

longavailableBlocks = stat.getAvailableBlocks();

returnavailableBlocks * 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

*/

staticpubliclonggetTotalInternalMemorySize() {

File path = Environment.getDataDirectory();//Gets the Android data directory

StatFs stat = newStatFs(path.getPath());

longblockSize = stat.getBlockSize();//每个block 占字节数

longtotalBlocks = stat.getBlockCount();//block总数

returntotalBlocks * 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

*/

staticpubliclonggetAvailableExternalMemorySize() {

if(isExternalStorageAvailable()) {

File path = Environment.getExternalStorageDirectory();//获取SDCard根目录

StatFs stat = newStatFs(path.getPath());

longblockSize = stat.getBlockSize();

longavailableBlocks = stat.getAvailableBlocks();

returnavailableBlocks * blockSize;

} else{

return-1;

}

}

/**

* 获取手机外部总空间大小

* @return

*/

staticpubliclonggetTotalExternalMemorySize() {

if(isExternalStorageAvailable()) {

File path = Environment.getExternalStorageDirectory(); //获取SDCard根目录

StatFs stat = newStatFs(path.getPath());

longblockSize = stat.getBlockSize();

longtotalBlocks = stat.getBlockCount();

returntotalBlocks * 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进行读写的时候 会用到Environment类下面的几个静态方法:

1:getDataDirectory()获取到Android中的data数据目录

2:getDownloadCacheDirectory() 获取到下载的缓存目录

3:()     获取到外部存储的目录 一般指SDcard

4:()           获取外部设置的当前状态 一般指SDcard,

android系统中对于外部设置的状态,比较常用的是MEDIA_MOUNTED(SDcard存在且可以进行读写)MEDIA_MOUNTED_READ_ONLY(SDcard存在,只可以进行读操作) 当然还有其他的一些状态,可以在文档中进行查找到。

5:()                   获取到Android Root路径

6:()    返回Boolean值判断外部设置是否有效

7:() 返回Boolean值,判断外部设置是否可以移除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值