当前位置:首页 > Android

获取Android手机中SD卡存储信息

jsc10年前 (2016-04-05)Android3519

SD卡作为手机的扩展存储设备,在手机中充当硬盘角色,可以让我们手机存放更多的数据以及多媒体等大体积文件。因此查看SD卡的内存就跟我们查看硬盘的剩余空间一样,是我们经常操作的一件事,那么在Android开发中,我们如何能获取SD卡的内存容量呢?

首先,要获取SD卡上面的信息,必须先对SD卡有访问的权限,因此第一件事就是需要添加访问扩展设备的权限。

<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE">
</uses-permission>其次,需要判断手机上面SD卡是否插好,如果有SD卡的情况下,我们才可以访问得到并获取到它的相关信息,当然以下这个语句需要用if做判断。


Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)取得sdcard文件路径
File path = Environment.getExternalStorageDirectory();
StatFs statfs = new StatFs(path.getPath());获取block的SIZE
long blocSize = statfs.getBlockSize();获取BLOCK数量
long totalBlocks = statfs.getBlockCount();空闲的Block的数量
long availaBlock = statfs.getAvailableBlocks();计算总空间大小和空闲的空间大小


储空间大小跟空闲的存储空间大小就被计算出来了。

/**
 * 取得空闲sd卡空间大小
 * @return
 */
 public long getAvailaleSize(){
     File path = Environment.getExternalStorageDirectory(); //取得sdcard文件路径
     StatFs stat = new StatFs(path.getPath());
     /*获取block的SIZE*/
     long blockSize = stat.getBlockSize();
     /*空闲的Block的数量*/
     long availableBlocks = stat.getAvailableBlocks();
     /* 返回bit大小值*/
     return availableBlocks * blockSize;
     //(availableBlocks * blockSize)/1024      KIB 单位
     //(availableBlocks * blockSize)/1024 /1024  MIB单位
 
 }
        
/**
 * SD卡大小
 * @return
 */
 public long getAllSize(){
           File path = Environment.getExternalStorageDirectory();
           StatFs stat = new StatFs(path.getPath());
           /*获取block的SIZE*/
           long blockSize = stat.getBlockSize();
           /*块数量*/
           long availableBlocks = stat.getBlockCount();
           /* 返回bit大小值*/
           return availableBlocks * blockSize;
 }

扫描二维码推送至手机访问。

版权声明:本文由微小站发布,如需转载请注明出处。

本文链接:https://jsc0.com/post/64.html

标签: SD
分享给朋友:

“获取Android手机中SD卡存储信息” 的相关文章

Fragment生命周期

Fragment生命周期

onAttach方法:Fragment和Activi…

android json解析及简单例子

JSON的定义:       一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式…

Fragment保持状态切换

Fragment保持状态切换

在使用Activity管理多个Fragment时,每次切换Fragment使用的是replace,结果导致出现xxx is not currently in the FragmentManager异常挂掉网上说使用replace切换会使被切换的Fragment给替换掉,从而被被切换的Fra…

android客户端和java服务端之间用socket来传输图片

一、从服务端向客户端发送图片:服务端的代码:import java.io.DataOutputStream;   import java.io.FileInputStream;   import java.io.IOExcep…

JAVA中使用JSON进行数据传递

最近在做一个基于JAVA Servlet的WEB应用以及对应的Anroid应用客户端的开发工作。其中,在接口的访问和数据的传输方面使用的比较多的是使用JSON对象来操作格式化数据:在服务器端采用JSON字符串来传递数据并在WEB前端或者Android客户端使用JSON来解析接收到的数据。首先,在JA…