`

获取手机存储设备的空间使用情况

 
阅读更多
Android系统提供了Environment 和StatFs两个类,配合可以实现对存储设备容量的查看。

  Environment: 获取系统中的存储设备信息


    getDataDirectory(): 获取应用存储空间文件对象。
    getExternalStorageDirectory(): 获取外部存储设备及SD卡文件对象。

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


  StatFs: 用于获取具体文件的信息。
    getBlockCount(): 获取存储块数量。
    getAvailableBlocks(): 获取存储块数量。
    getBlockSize(): 获取存储块大小。

  因为Android是基于Linux系统的,所以其没有盘符的概念,而且是以存储块来存储数据。所以获得容量的正确方式为:
  1. 通过Environment获取需要检测容量的文件对象。
  2. 构建StatFs对象。
  3. 获取存储块数量。
  4. 获取存储块大小。
  5. 计算得出容量大小。

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


下面是代码:

package Getystem_file_info.demo;


import java.io.File;
import java.text.DecimalFormat;


import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.view.View;
import android.widget.TextView;


public class MainActivity extends Activity {
private TextView tv1,tv2,tv3,tv4;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findVeiw();

if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
File externalStoragePath = Environment.getExternalStorageDirectory();

StatFs statFs = new StatFs(externalStoragePath.getPath());

int blockSize = statFs.getBlockSize();

int blockCount = statFs.getBlockCount();

int availableBlocks = statFs.getAvailableBlocks();

int freeBlocks = statFs.getFreeBlocks();


String[] blockSizes = sizeFormat(blockCount*blockSize);
String[] availableSize = sizeFormat(availableBlocks*blockSize);
String[] freebleSize = sizeFormat(freeBlocks*blockSize);

tv1.setText("外储设备总大小:"+ blockSizes[0] + blockSizes[1] );
tv2.setText("外储设备可用大小:"+ availableSize[0] + availableSize[1] );
tv3.setText("外储设备freeBlocks大小:"+ freebleSize[0] + freebleSize[1] );


}

}


private void findVeiw() {
tv1 = (TextView) this.findViewById(R.id.textview1);
tv2 = (TextView) this.findViewById(R.id.textview2);
tv3 = (TextView) this.findViewById(R.id.textview3);
}


String[] sizeFormat(long size) {
String str = "B";
if(size >= 1024) {
str = "KB";
size /= 1024;
if(size >= 1024) {
str = "MB";
size /= 1024;
}
}

DecimalFormat format = new DecimalFormat();
format.setGroupingSize(3);
String[] result = new String[2];

result[0] = format.format(size);
result[1] = str;

return result;
}
}









分享到:
评论

相关推荐

    获取手机剩余内部存储大小

    获取手机剩余内部存储大小,简单的demo

    Android获取手机所有文件存储路径

    博客地址:http://blog.csdn.net/lowprofile_coding/article/details/48269011 1.获取扩展存储设备 2.获取sdcard2外部存储空间 3.获取可用的 EMMC 内部存储空间 4.获取其他外部存储可用空间 5.获取内部存储目录

    Android之获取手机内部及sdcard存储空间的方法

    移动设备上可以有两种的存储方式:手机内部空间和sdcard外部空间。对于要使用存储空间,要使用哪一个?如何判断是否有足够的空间?sdcard是否挂载?等等诸多问题就来了。 对于设备内部存储空间来说,是一定会存在的...

    Android获取系统储存以及内存信息的方法(二)

    Android获取储存信息以及内存信息可以用adb命令查看。... * 获取手机内存总大小 * @return */ public static String getTotalMemorySize() { try { FileReader fr = new FileReader(FILENAME_PROC_ME

    获取设备内存大小和剩余内存大小

    获取ios设备的总内存大小和剩余内存大小

    native.js获取手机硬件基本信息实例代码android版

    本文为大家分享了native.js获取手机硬件基本信息实例代码android版包括手机MAC地址,手机内存大小,手机存储空间大小,手机CPU信息等手机硬件基本信息

    Android-存储路径与管理应用文件存储方法汇总

     Android手机存储分为两个部分:内部存储和外部存储,内部存储一般是手机自带的存储空间,外部存储指外插SD卡提供的存储空间;随着手机发展,这两个存储的定义又有了一些些变化,新的手机不再有外插SD卡的概念,...

    赣极本地商务软件系统 v1.0.zip

    适合建立区域性的电子商务补充商务...如果上传空间使用,需要获取许可码, 在地址localhost或127.0.0.1环境目录下, 可以无需输入许可码就可以正常使用测试,功能无限制。 更多使用细节请浏览压缩包里的《安装说明》

    springboot微信小程序登录获取用户信息的demo案例.zip

    零安装:用户只需通过微信扫一扫或搜索功能,即可打开和使用小程序,大大降低了用户的使用门槛和手机存储空间压力。 速度快:加载速度相较于传统的HTML5网页更快,依托于微信强大的基础设施,能够实现近乎原生应用...

    甲壳虫ADB助手-v1.3.0

    2、轻松获取设备信息,包括设备型号、CPU信息、运行内存、存储空间、屏幕信息、网络连接信息、电池信息等 3、获取已安装应用信息,包括包名、应用名、图标等,并且可对应用进行安装/卸载、启用/停用、清除数据等操作...

    本程序可控制手机震动、响铃、回拨电话、定位等功能.zip

    零安装:用户只需通过微信扫一扫或搜索功能,即可打开和使用小程序,大大降低了用户的使用门槛和手机存储空间压力。 速度快:加载速度相较于传统的HTML5网页更快,依托于微信强大的基础设施,能够实现近乎原生应用...

    基于 springboot 实现微信扫描小程序码登录.zip

    零安装:用户只需通过微信扫一扫或搜索功能,即可打开和使用小程序,大大降低了用户的使用门槛和手机存储空间压力。 速度快:加载速度相较于传统的HTML5网页更快,依托于微信强大的基础设施,能够实现近乎原生应用...

    绿色电力可再生资源执行手机和应急灯充电-研究论文

    在这个现代时代,手机等电子设备的... 调节器电路的输出存储在存储设备中。 功率电平指示由比较器电路提供。 储存的能量可用于为手机电池、应急灯等充电。 为用户提供的设备将安静且易于携带,并且需要尽可能少的空间。

    TP-LINK WR703N OpenWrt刷机教程及固件 4M ,稳定 支持3G和打印机共享外接网卡

    挂载USB存储设备时,如果不用samba请删之。) 6. 按住reset键30秒后led闪烁,60秒之前松开reset键则恢复出厂设置。 7. LAN/WAN两个网口正常。 8. 默认开启WiFi,无密码。 9. 支持模式切换开关,定义如下: AP: ...

    Android代码-MyUtils

    项目里面提供时间轴转星座|生肖工具、系统存储空间获取工具、文件大小格式化工具、获取指定文件大小工具、数字格式化工具、 Base64编码解码工具、MD5加密工具、AES加密解码工具(支持android端平台加密解密,java端和...

    仿照微信双开、QQ双开等实现app应用双开.zip

    零安装:用户只需通过微信扫一扫或搜索功能,即可打开和使用小程序,大大降低了用户的使用门槛和手机存储空间压力。 速度快:加载速度相较于传统的HTML5网页更快,依托于微信强大的基础设施,能够实现近乎原生应用...

    TP-LINK WR703N OpenWrt刷机教程及固件 4M ,稳定 支持3G和打印机共享外接卡簧

    挂载USB存储设备时,如果不用samba请删之。) 6. 按住reset键30秒后led闪烁,60秒之前松开reset键则恢复出厂设置。 7. LAN/WAN两个网口正常。 8. 默认开启WiFi,无密码。 9. 支持模式切换开关,定义如下: AP: ...

    OwnCloud包文件

    ​ OwnCloud能让你将所以的文件掌握在自己的手中,只要你的设备性能空间充足,那么几乎没有任何的限制。 跨平台性 ​ OwnCloud跨平台支持windows、mac、Android、ios、linux等平台。 使用方式 ​ 提供了网页版...

Global site tag (gtag.js) - Google Analytics