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卡存储空间的总大小和可用大小了。
分享到:
相关推荐
这个简单的demo展示了如何在Android应用中获取内部存储的剩余空间。开发者可以根据实际需求调整代码,例如添加异常处理、兼容不同API版本的适配等。通过这样的方法,我们能够有效地监控和管理应用的存储占用,为用户...
在Android系统中,读取外置和内置存储卡的路径以及获取它们的大小是常见的需求,尤其是在处理多媒体文件或者管理应用程序数据时。本教程将详细解释如何实现这一功能。 首先,我们要了解Android对存储卡的分类。在...
至于存储空间,可以使用`StatFs`类来获取内部或外部存储的可用空间: ```java // 获取内部存储 StatFs internalStatFs = new StatFs(Environment.getDataDirectory().getPath()); long blockSizeBytes = ...
以下是对如何在Android中读取内部存储空间大小的详细解释。 首先,我们需要知道的是Android提供了`java.io.File`类来处理文件和目录操作。我们可以使用这个类的一些方法来获取存储信息。主要涉及到的方法有: 1. `...
通过这篇文章,我们了解了如何获取内部存储空间总大小和可用大小,以及如何获取sdcard存储空间总大小和可用大小。这些技术可以帮助我们更好地管理存储空间,提高应用程序的性能。 知识点总结: * 内部存储空间获取...
这个压缩包中的代码可能是实现这一目标的关键步骤,通过这些修改,开发者可以有效地扩展Android设备的存储空间,为用户提供更多的存储容量。在实际应用中,还需要进行详尽的测试以确保所有功能的正常运行。
- **使用**:可以通过`Context`的`openFileOutput()`方法创建和读取文件,或者使用`getFilesDir()`获取内部存储的根目录。 2. **SDCard存储(外部存储)** - **定义**:SDCard或外部存储通常指的是用户可以插入的...
5. 为了获取硬盘空间大小,可以使用`StatFs`类,传入挂载路径,然后调用`blockCountLong()`和`blockSizeLong()`方法,计算出总空间和可用空间。 这种反射技术虽然能够解决不同设备间的兼容问题,但也存在潜在的风险...
在Android系统中,获取安装后的应用(APP)所占的空间大小是开发者或用户可能需要进行的一项常见操作。这包括了APK文件自身的大小、应用程序在运行时生成的缓存文件以及存储的数据。了解这些信息有助于优化应用性能...
在Android中,手机内存通常指的是内部存储空间,也就是/data分区。我们可以使用以下代码来获取内部存储的可用空间: ```java // 获取内存路径 String path = Environment.getDataDirectory().getAbsolutePath()...
Android为开发者提供了多种方式来管理和访问文件,包括内部存储、外部存储(通常指SD卡)以及外部存储的公共目录。本篇将详细介绍在Android 2.3及更高版本中,如何获取和操作Android设备的内存目录以及SDCard目录。 ...
总之,Android设备的外置SDcard(TF卡)是扩展存储空间的重要途径,获取和管理TF卡涉及编程接口的使用、系统权限的控制以及用户界面的操作。理解这些知识点对于优化Android设备的存储管理和使用体验至关重要。
1. **文件路径**:理解Android中内部存储和外部存储的路径,以及如何获取这些路径。 2. **文件操作**:如何创建、打开、读取、修改和删除文件。 3. **多媒体文件处理**:如何处理图片、音频和视频文件,包括导入...
总结起来,`Environment`和`StatFs`在Android开发中用于获取和管理外部存储的状态和空间信息,这对于监测存储空间、决定何时提示用户清理空间等场景非常有用。通过合理地使用这两个类,开发者可以实现对存储卡剩余...
1. **Android存储体系**:Android设备有两种类型的存储空间,内部存储(Internal Storage)和外部存储(External Storage)。内部存储通常较小,用于存放应用数据和系统文件;外部存储包括内置SD卡(通常是内部存储...
Android设备通常拥有两种类型的存储空间:内部存储(Internal Storage)和外部存储(External Storage),也就是常说的SD卡或内置存储。下面我们将详细探讨这些知识点。 1. **内部存储**: - 内部存储是设备提供的...
由于内部存储空间有限,很多应用倾向于使用外部存储来保存较大的文件,如图片、视频等。因此,开发者需要掌握检查外部存储状态的方法,以确保文件可以安全地被读取或写入。 #### 2. SD卡状态的重要性 在进行文件...
扩展存储则是指除内置和外部存储之外的额外存储空间,如USB OTG设备。 在Android的不同版本中,对内部存储和外部存储的访问相对较为一致,可以通过标准API如`Context.getFilesDir()`和`Environment....
在Android系统中,文件的保存和读取...总结起来,Android文件系统的使用涵盖了内部存储和外部存储,涉及文件的创建、读写以及权限控制等多个方面。开发者需要根据应用需求选择合适的数据存储方式,并注意安全性和效率。