有时我们开Android项目开发时会用到文件存储或上传文件的一些操作,那么我们前提是要获取到该存储设备的大小,以方便于与我们需要操作的文件的大小做比较,如果操作的文件大小小于存储空间,那么就可以继续操作,反之则不能进行操作

该方法获取存储设备的总大小

/**
 * 获取存储设备总存储空间
 *
 * @param path 存储设备目录对象
 */
private String getTotalSize(File path) {
 // 创建StatFs对象
 StatFs stat = new StatFs(path.getPath());
 // 获取每个存储快的大小
 long blockSize = stat.getBlockSize();
 // 获取所有的存储块
 long blockCount = stat.getBlockCount();
 // 获取内部存储的总大小
 long totalSize = blockCount * blockSize;
 // 将long类型转为字符串
 String totalStr = Formatter.formatFileSize(this, totalSize);
 return totalStr;
}

获取存储设备的可用大小

/**
 * 获取可用存储空间
 * @param path 存储设备目录对象
 * @return
 */
private String getAvailSize(File path) {
 // 创建StatFs对象
 StatFs stat = new StatFs(path.getPath());
 // 获取每个存储快的大小
 long blockSize = stat.getBlockSize();
 // 获取可用的存储块
 long availableBlocks = stat.getAvailableBlocks();
 // 获取内部存储的可用大小
 long availSize = availableBlocks * blockSize;
 // 将long类型转为字符串
 String availStr = Formatter.formatFileSize(this, availSize);
 return availStr;
}

在主方法调用

private TextView tvSdCard, tvPhoneSpace;

@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 // 取消标题
 requestWindowFeature(Window.FEATURE_NO_TITLE);
 setContentView(R.layout.activity_main);
 // 获取TextView对象
 tvSdCard = (TextView) findViewById(R.id.tv_sd_card_info);
 tvPhoneSpace = (TextView) findViewById(R.id.tv_data_size);
 // 获取外部存储目录对象
 File externalStorage = Environment.getExternalStorageDirectory();
 // 获取内部存储目录对象
 File internalStorage = Environment.getDataDirectory();
 //获取外部存储设备总空间
 String externalTotalSize=getTotalSize(externalStorage);
 //获取外部存储设备可以空间
 String externalAvailSize=getAvailSize(externalStorage);
 //设置TextView信息
 tvSdCard.setText("外部存储设备总空间:"+externalTotalSize+"\n可用空间:"+externalAvailSize);
 //获取内部存储设备总空间
 String internalTotalSize=getTotalSize(internalStorage);
 //获取内部存储设备可用空间
 String internalAvailSize=getAvailSize(internalStorage);
 //设置TextView信息
 tvPhoneSpace.setText("内部存储设备总空间:"+internalTotalSize+"\n可用空间:"+internalAvailSize);
}

转载于:https://blog.51cto.com/tenghu/1351360

Android获取内部和SDCard的存储空间相关推荐

  1. Android获取内置sdcard跟外置sdcard路径

    Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标准接口. 2.得到上一级文件夹目录 3.得到该目录的所有文 ...

  2. android获取内部存储卡里的文件,获取Android内部存储(外部SD卡)和扩展存储卡(TF卡)的路径...

    获取Android内部存储(外部SD卡)和扩展存储卡(TF卡)的路径 获取Android内部存储(外部SD卡)和扩展存储卡(TF卡)的路径 sd卡存储外部存储卡路径外部存储卡外部存储卡路径内置存储卡外 ...

  3. android 获取sdcard 禁用sdcard,Android获取内置sdcard跟外置sdcard路径

    Android获取内置sdcard跟外置sdcard路径 Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标 ...

  4. Android 获取内部存储中音乐文件的正确姿势

    最近想写一个音乐的小APP出来(doge),借此熟悉音频开发的相关技术.但是在获取内部存储的音乐文件时踩了一些坑...所以有了这篇帖子,简单介绍下Android的存储类别,以及如何获取内部存储中的音乐 ...

  5. Android 获取系统或SDCARD剩余空间信息(转)

    android.os下的StatFs类主要用来获取文件系统的状态,能够获取sd卡的大小和剩余空间,获取系统内部空间也就是/system的大小和剩余空间等等.       看下读取sd卡的: Java代 ...

  6. Android 获取系统或SDCARD剩余空间信息

    android.os下的StatFs类主要用来获取文件系统的状态,能够获取sd卡的大小和剩余空间,获取系统内部空间也就是/system的大小和剩余空间等等. 看下读取sd卡的: void readSD ...

  7. android assets绝对路径,Android 获取assets的绝对路径

    第一种方法: String path = "file:///android_asset/文件名"; 第二种方法: InputStream abpath = getClass().g ...

  8. Android之获取手机内部及sdcard存储空间

    Android之获取手机内部及sdcard存储空间 文章链接 知识点: 内部存储空间获取总大小和可用大小: sdcard存储空间获取总大小和可用大小: 新名词记录{StatFs:描述文件系统信息的类} ...

  9. android获取手机内部存储空间和外部存储空间

    原文: http://blog.163.com/hero_213/blog/static/39891214201162123236660/ 该代码片段可以让我们获取internal和external的 ...

最新文章

  1. 英伟达吞并Arm失败!英美欧盟一齐干涉,老黄还要给孙正义12.5亿美元分手费
  2. nginx的upstream目前支持5种方式的分配
  3. ECMAScript 2016(ES7)新特性简介
  4. android导航屏幕,发现具有软件导航栏的Android设备的真实屏幕尺寸(以像素为单位)...
  5. 【学习Android NDK开发】Type Signatures(类型签名)
  6. 给ABBYY添加图像的方法
  7. 第一章 为什么我们对机器学习感兴趣?(六)
  8. android studio发布版和测试版证书SHA1获取
  9. 【转】Android业务组件化之URL Scheme使用
  10. 卫星电话是直接与卫星通信还是通过地面站?
  11. python正则表达式提取网页的图片链接
  12. 《谈美》读书感想:读书于人生的意义
  13. Flixel Dame 坦克大战(三)完成基本逻辑
  14. 使用智遥工作流,优化SAP请购流程
  15. 刚子扯谈:“爆吧”圣斗士们,你妈没叫你回家吃饭
  16. 【c++篇】c++常见容器中list的模拟实现
  17. GYM 100827 I.Salary Inequity(线段树)
  18. 【翻译】在Windows上直接查询SRV方式的地址
  19. Stream流学习记录
  20. 什么是整洁代码?大咖程序员们这样说

热门文章

  1. EnterpriseDB Migration 迁移工具使用测试(2)
  2. 三,ES6中需要注意的特性(重要)
  3. MFC中利用CFileDialog选择文件并读取文件所遇到的问题和解决方法
  4. SpringBoot的修改操作
  5. 前端编程提高之旅(五)----写给大家看的css书
  6. 3分钟内快速部署MySQL5.6.35数据库实践
  7. Log4j日志管理的用法
  8. 2012 ARM嵌入式开发应用研讨会杂谈
  9. 单片微型计算机概念及组成,中国民用航空飞行学院2014年微机原理与接口考研复习大纲...
  10. 如何在python开发的GUI界面程序中恰当地使用PyExecJS