`
chroya
  • 浏览: 661548 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android获取外部和内部存储空间总大小和可用大小

阅读更多

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

      看下读取sd卡的:

void readSDCard() {
    	String state = Environment.getExternalStorageState();
    	if(Environment.MEDIA_MOUNTED.equals(state)) {
    		File sdcardDir = Environment.getExternalStorageDirectory();
    		StatFs sf = new StatFs(sdcardDir.getPath());
    		long blockSize = sf.getBlockSize();
    		long blockCount = sf.getBlockCount();
    		long availCount = sf.getAvailableBlocks();
    		Log.d("", "block大小:"+ blockSize+",block数目:"+ blockCount+",总大小:"+blockSize*blockCount/1024+"KB");
    		Log.d("", "可用的block数目::"+ availCount+",剩余空间:"+ availCount*blockSize/1024+"KB");
    	} 	
    }

       然后看下读取系统内部空间的:

void readSystem() {
    	File root = Environment.getRootDirectory();
		StatFs sf = new StatFs(root.getPath());
		long blockSize = sf.getBlockSize();
		long blockCount = sf.getBlockCount();
		long availCount = sf.getAvailableBlocks();
		Log.d("", "block大小:"+ blockSize+",block数目:"+ blockCount+",总大小:"+blockSize*blockCount/1024+"KB");
		Log.d("", "可用的block数目::"+ availCount+",可用大小:"+ availCount*blockSize/1024+"KB");
    }

       StatFs获取的都是以block为单位的,这里我解释一下block的概念:

1.硬件上的 block size, 应该是"sector size",linux的扇区大小是512byte
2.有文件系统的分区的block size, 是"block size",大小不一,可以用工具查看
3.没有文件系统的分区的block size,也叫“block size”,大小指的是1024 byte
4.Kernel buffer cache 的block size, 就是"block size",大部分PC是1024
5.磁盘分区的"cylinder size",用fdisk 可以查看。

      我们这里的block size是第二种情况,一般SD卡都是fat32的文件系统,block size是4096.

      这样就可以知道手机的内部存储空间和sd卡存储空间的总大小和可用大小了。

2
0
分享到:
评论

相关推荐

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

    在Android系统中,获取手机剩余内部存储大小是开发者经常需要进行的操作,这有助于优化应用程序的存储管理,确保应用不会超出可用空间而导致用户困扰。本文将详细介绍如何通过编程方式获取手机内部存储的剩余空间,...

    08读取内部存储空间大小

    在Android系统中,内部存储空间通常指的是设备上用于应用程序数据、首选项和其他私有文件的存储区域。了解如何读取内部存储空间的大小对于开发者来说是至关重要的,可以帮助优化应用程序的资源管理和用户反馈。以下...

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

    * 获取内部存储空间可用大小:通过StatFs类获取可用区块和每个区块的字节大小,计算出可用大小 二、sdcard存储空间 sdcard存储空间是手机外部的存储空间,用户可以通过sdcard扩展存储空间。获取sdcard存储空间的总...

    android 读取外置和内置存储卡路径和大小

    通过上述方法,你可以在Android应用中轻松读取内外部存储卡的路径和大小。在实际项目中,可以根据需求进行适当的封装和异常处理,以提供更稳定、健壮的存储管理功能。记得在使用这些代码之前,先测试它们在不同设备...

    Android中的内部存储和外部存储

    Android的外部存储主要指的是SD卡或者手机内置的外部存储空间,它可以被所有应用共享,并且用户可以通过USB等方式访问这些数据。外部存储通常用于保存大文件,如图片、音频、视频等,或者是需要与其他应用共享的数据...

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

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

    android平台存储容量大小更改

    最后,`StatFs.java`是Android提供的一个类,用于获取文件系统的统计信息,如总大小、可用空间等。当Flash容量翻倍时,`StatFs`的实例化和使用必须相应更新,以反映新的存储条件。这可能涉及修改构造函数参数,或者...

    android获取手机内存大小

    至于存储空间,可以使用`StatFs`类来获取内部或外部存储的可用空间: ```java // 获取内部存储 StatFs internalStatFs = new StatFs(Environment.getDataDirectory().getPath()); long blockSizeBytes = ...

    android通过反射获取内置存储、SD、OTG盘的路径,适合三方apk存储查看与文件管理

    5. 为了获取硬盘空间大小,可以使用`StatFs`类,传入挂载路径,然后调用`blockCountLong()`和`blockSizeLong()`方法,计算出总空间和可用空间。 这种反射技术虽然能够解决不同设备间的兼容问题,但也存在潜在的风险...

    android获取SDcard内存空间

    然后,从Android API 29(Android 10)开始,推荐使用`MANAGE_EXTERNAL_STORAGE`权限来访问所有外部存储空间。如果需要此权限,需要在AndroidManifest.xml中添加: ```xml <uses-permission android:name="android....

    得SDCard,手机,存储空间,可用空间(付源码)

    标题中的“得SDCard,手机,存储空间,可用空间(付源码)”指的是一个关于Android平台下获取SDCard(外部存储卡)以及手机内部存储空间,并检查其可用空间的程序。这个程序对于开发者来说非常实用,因为它允许他们监控...

    android 获取手机内存及 内存可用空间的方法

    总结来说,通过`StatFs`类提供的方法,我们可以轻松地获取Android设备的内部存储和SD卡的可用空间。这个信息对于监控应用的存储需求,优化资源管理,以及向用户提供有关设备状态的反馈非常有用。确保正确处理权限...

    安卓SD卡文件管理更新信息相关-android读取外置和内置存储卡路径和大小.rar

    1. **Android存储体系**:Android设备有两种类型的存储空间,内部存储(Internal Storage)和外部存储(External Storage)。内部存储通常较小,用于存放应用数据和系统文件;外部存储包括内置SD卡(通常是内部存储...

    android 查询存储卡剩余容量 (Environment 加 StatFs)

    总结起来,`Environment`和`StatFs`在Android开发中用于获取和管理外部存储的状态和空间信息,这对于监测存储空间、决定何时提示用户清理空间等场景非常有用。通过合理地使用这两个类,开发者可以实现对存储卡剩余...

    Android文件存储:内部存储,外部存储及其路径

    一般我们会把存储内容放在外部存储空间里。在使用过程需要注意事项: 先判断SD卡是否可用,可用时优先使用SD卡的存储,不可用时用内部存储 存储在SD卡上时,可以在SD卡上新建任意一个目录存放,也可以存放在应用程序...

    Android开发之系统信息【1】——获取Android手机中SD卡存储信息

    综上所述,获取Android手机SD卡存储信息的过程主要包括申请权限、判断SD卡状态、获取`StatFs`对象以及计算存储空间。开发者可以根据需求调整代码,比如添加错误处理机制,或者适配不同Android版本的差异。了解这些...

    Android数据存储(内置sdcard1)

    - **可用性**:内部存储空间不受用户移除SD卡的影响,而外部存储在用户取出SD卡时,数据不可用。 - **权限管理**:内部存储无需额外的读写权限,而外部存储在Android 6.0及以上版本需要请求WRITE_EXTERNAL_STORAGE...

    获取 Android 设备的系统信息 包含屏幕信息、内存信息、IMEI、存储、传感器、CPU等信息.zip

    在Android平台上,获取设备的系统信息是开发过程中常见的需求,这包括屏幕参数、内存状态、IMEI号码、存储空间、传感器信息以及CPU详情等。以下将详细解释如何获取这些信息。 1. **屏幕信息**: - 屏幕尺寸:通过`...

    android 数据存储的几种方式

    外部存储,即SD卡或手机的外部存储空间,提供更大的存储容量,但不保证一直可用。外部存储适合存储用户生成的文件,如图片、音频、视频等。开发者可以通过Environment类获取外部存储路径,并进行读写操作。需要注意...

Global site tag (gtag.js) - Google Analytics