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卡存储空间的总大小和可用大小了。
分享到:
相关推荐
在Android系统中,获取手机剩余内部存储大小是开发者经常需要进行的操作,这有助于优化应用程序的存储管理,确保应用不会超出可用空间而导致用户困扰。本文将详细介绍如何通过编程方式获取手机内部存储的剩余空间,...
在Android系统中,内部存储空间通常指的是设备上用于应用程序数据、首选项和其他私有文件的存储区域。了解如何读取内部存储空间的大小对于开发者来说是至关重要的,可以帮助优化应用程序的资源管理和用户反馈。以下...
* 获取内部存储空间可用大小:通过StatFs类获取可用区块和每个区块的字节大小,计算出可用大小 二、sdcard存储空间 sdcard存储空间是手机外部的存储空间,用户可以通过sdcard扩展存储空间。获取sdcard存储空间的总...
通过上述方法,你可以在Android应用中轻松读取内外部存储卡的路径和大小。在实际项目中,可以根据需求进行适当的封装和异常处理,以提供更稳定、健壮的存储管理功能。记得在使用这些代码之前,先测试它们在不同设备...
Android的外部存储主要指的是SD卡或者手机内置的外部存储空间,它可以被所有应用共享,并且用户可以通过USB等方式访问这些数据。外部存储通常用于保存大文件,如图片、音频、视频等,或者是需要与其他应用共享的数据...
博客地址:http://blog.csdn.net/lowprofile_coding/article/details/48269011 1.获取扩展存储设备 2.获取sdcard2外部存储空间 3.获取可用的 EMMC 内部存储空间 4.获取其他外部存储可用空间 5.获取内部存储目录
最后,`StatFs.java`是Android提供的一个类,用于获取文件系统的统计信息,如总大小、可用空间等。当Flash容量翻倍时,`StatFs`的实例化和使用必须相应更新,以反映新的存储条件。这可能涉及修改构造函数参数,或者...
至于存储空间,可以使用`StatFs`类来获取内部或外部存储的可用空间: ```java // 获取内部存储 StatFs internalStatFs = new StatFs(Environment.getDataDirectory().getPath()); long blockSizeBytes = ...
5. 为了获取硬盘空间大小,可以使用`StatFs`类,传入挂载路径,然后调用`blockCountLong()`和`blockSizeLong()`方法,计算出总空间和可用空间。 这种反射技术虽然能够解决不同设备间的兼容问题,但也存在潜在的风险...
然后,从Android API 29(Android 10)开始,推荐使用`MANAGE_EXTERNAL_STORAGE`权限来访问所有外部存储空间。如果需要此权限,需要在AndroidManifest.xml中添加: ```xml <uses-permission android:name="android....
标题中的“得SDCard,手机,存储空间,可用空间(付源码)”指的是一个关于Android平台下获取SDCard(外部存储卡)以及手机内部存储空间,并检查其可用空间的程序。这个程序对于开发者来说非常实用,因为它允许他们监控...
总结来说,通过`StatFs`类提供的方法,我们可以轻松地获取Android设备的内部存储和SD卡的可用空间。这个信息对于监控应用的存储需求,优化资源管理,以及向用户提供有关设备状态的反馈非常有用。确保正确处理权限...
1. **Android存储体系**:Android设备有两种类型的存储空间,内部存储(Internal Storage)和外部存储(External Storage)。内部存储通常较小,用于存放应用数据和系统文件;外部存储包括内置SD卡(通常是内部存储...
总结起来,`Environment`和`StatFs`在Android开发中用于获取和管理外部存储的状态和空间信息,这对于监测存储空间、决定何时提示用户清理空间等场景非常有用。通过合理地使用这两个类,开发者可以实现对存储卡剩余...
一般我们会把存储内容放在外部存储空间里。在使用过程需要注意事项: 先判断SD卡是否可用,可用时优先使用SD卡的存储,不可用时用内部存储 存储在SD卡上时,可以在SD卡上新建任意一个目录存放,也可以存放在应用程序...
综上所述,获取Android手机SD卡存储信息的过程主要包括申请权限、判断SD卡状态、获取`StatFs`对象以及计算存储空间。开发者可以根据需求调整代码,比如添加错误处理机制,或者适配不同Android版本的差异。了解这些...
- **可用性**:内部存储空间不受用户移除SD卡的影响,而外部存储在用户取出SD卡时,数据不可用。 - **权限管理**:内部存储无需额外的读写权限,而外部存储在Android 6.0及以上版本需要请求WRITE_EXTERNAL_STORAGE...
在Android平台上,获取设备的系统信息是开发过程中常见的需求,这包括屏幕参数、内存状态、IMEI号码、存储空间、传感器信息以及CPU详情等。以下将详细解释如何获取这些信息。 1. **屏幕信息**: - 屏幕尺寸:通过`...
外部存储,即SD卡或手机的外部存储空间,提供更大的存储容量,但不保证一直可用。外部存储适合存储用户生成的文件,如图片、音频、视频等。开发者可以通过Environment类获取外部存储路径,并进行读写操作。需要注意...