StatFs 一个模拟linux
的df命令的一个类,获得SD卡和
手机内存的使用情况
StatFs 常用方法:
StatFs 常用方法:
- getAvailableBlocks()
- 解释:返回 Int ,获取当前可用的存储空间
- getBlockCount()
- 解释:返回 Int ,获取该区域可用的文件系统数
- getBlockSize()
- 解释:返回 Int ,大小,以字节为单位,一个文件系统
- getFreeBlocks()
- 解释:返回 Int ,该块区域剩余的空间
- restat(String path)
- 解释:执行一个由该对象所引用的文件系统
package
com.orgcent.util
;
import java.io.File ;
import android.os.Environment ;
import android.os.StatFs ;
public class MemoryStatus {
static final int ERROR = - 1 ;
/**
* 外部存储是否可用
* @return
*/
static public boolean externalMemoryAvailable ( ) {
return android. os. Environment. getExternalStorageState ( ). equals (
android. os. Environment. MEDIA_MOUNTED ) ;
}
/**
* 获取手机内部可用空间大小
* @return
*/
static public long getAvailableInternalMemorySize ( ) {
File path = Environment. getDataDirectory ( ) ;
StatFs stat = new StatFs (path. getPath ( ) ) ;
long blockSize = stat. getBlockSize ( ) ;
long availableBlocks = stat. getAvailableBlocks ( ) ;
return availableBlocks * blockSize ;
}
/**
* 获取手机内部空间大小
* @return
*/
static public long getTotalInternalMemorySize ( ) {
File path = Environment. getDataDirectory ( ) ;
StatFs stat = new StatFs (path. getPath ( ) ) ;
long blockSize = stat. getBlockSize ( ) ;
long totalBlocks = stat. getBlockCount ( ) ;
return totalBlocks * blockSize ;
}
/**
* 获取手机外部可用空间大小
* @return
*/
static public long getAvailableExternalMemorySize ( ) {
if (externalMemoryAvailable ( ) ) {
File path = Environment. getExternalStorageDirectory ( ) ;
StatFs stat = new StatFs (path. getPath ( ) ) ;
long blockSize = stat. getBlockSize ( ) ;
long availableBlocks = stat. getAvailableBlocks ( ) ;
return availableBlocks * blockSize ;
} else {
return ERROR ;
}
}
/**
* 获取手机外部空间大小
* @return
*/
static public long getTotalExternalMemorySize ( ) {
if (externalMemoryAvailable ( ) ) {
File path = Environment. getExternalStorageDirectory ( ) ;
StatFs stat = new StatFs (path. getPath ( ) ) ;
long blockSize = stat. getBlockSize ( ) ;
long totalBlocks = stat. getBlockCount ( ) ;
return totalBlocks * blockSize ;
} else {
return ERROR ;
}
}
static public String formatSize ( long size ) {
String suffix = null ;
if (size >= 1024 ) {
suffix = "KiB" ;
size /= 1024 ;
if (size >= 1024 ) {
suffix = "MiB" ;
size /= 1024 ;
}
}
StringBuilder resultBuffer = new StringBuilder ( Long. toString (size ) ) ;
int commaOffset = resultBuffer. length ( ) - 3 ;
while (commaOffset > 0 ) {
resultBuffer. insert (commaOffset, ',' ) ;
commaOffset -= 3 ;
}
if (suffix != null )
resultBuffer. append (suffix ) ;
return resultBuffer. toString ( ) ;
}
}
import java.io.File ;
import android.os.Environment ;
import android.os.StatFs ;
public class MemoryStatus {
static final int ERROR = - 1 ;
/**
* 外部存储是否可用
* @return
*/
static public boolean externalMemoryAvailable ( ) {
return android. os. Environment. getExternalStorageState ( ). equals (
android. os. Environment. MEDIA_MOUNTED ) ;
}
/**
* 获取手机内部可用空间大小
* @return
*/
static public long getAvailableInternalMemorySize ( ) {
File path = Environment. getDataDirectory ( ) ;
StatFs stat = new StatFs (path. getPath ( ) ) ;
long blockSize = stat. getBlockSize ( ) ;
long availableBlocks = stat. getAvailableBlocks ( ) ;
return availableBlocks * blockSize ;
}
/**
* 获取手机内部空间大小
* @return
*/
static public long getTotalInternalMemorySize ( ) {
File path = Environment. getDataDirectory ( ) ;
StatFs stat = new StatFs (path. getPath ( ) ) ;
long blockSize = stat. getBlockSize ( ) ;
long totalBlocks = stat. getBlockCount ( ) ;
return totalBlocks * blockSize ;
}
/**
* 获取手机外部可用空间大小
* @return
*/
static public long getAvailableExternalMemorySize ( ) {
if (externalMemoryAvailable ( ) ) {
File path = Environment. getExternalStorageDirectory ( ) ;
StatFs stat = new StatFs (path. getPath ( ) ) ;
long blockSize = stat. getBlockSize ( ) ;
long availableBlocks = stat. getAvailableBlocks ( ) ;
return availableBlocks * blockSize ;
} else {
return ERROR ;
}
}
/**
* 获取手机外部空间大小
* @return
*/
static public long getTotalExternalMemorySize ( ) {
if (externalMemoryAvailable ( ) ) {
File path = Environment. getExternalStorageDirectory ( ) ;
StatFs stat = new StatFs (path. getPath ( ) ) ;
long blockSize = stat. getBlockSize ( ) ;
long totalBlocks = stat. getBlockCount ( ) ;
return totalBlocks * blockSize ;
} else {
return ERROR ;
}
}
static public String formatSize ( long size ) {
String suffix = null ;
if (size >= 1024 ) {
suffix = "KiB" ;
size /= 1024 ;
if (size >= 1024 ) {
suffix = "MiB" ;
size /= 1024 ;
}
}
StringBuilder resultBuffer = new StringBuilder ( Long. toString (size ) ) ;
int commaOffset = resultBuffer. length ( ) - 3 ;
while (commaOffset > 0 ) {
resultBuffer. insert (commaOffset, ',' ) ;
commaOffset -= 3 ;
}
if (suffix != null )
resultBuffer. append (suffix ) ;
return resultBuffer. toString ( ) ;
}
}