SD卡及ROM容量获取,先获取SD及ROM的路径,再根据该路径创建StatFs对象,利用其中方法即可获取容量及其他信息。
//SD容量显示
private void show_SD_storage()
{
// 先判断有无SD卡
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
String path=Environment.getExternalStorageDirectory().getPath();
StatFs statFs=new StatFs(path);
long blockSize=statFs.getBlockSize();
long totalBlocks=statFs.getBlockCount();
long availableBlocks=statFs.getAvailableBlocks();
long usedBlocks=totalBlocks-availableBlocks;
//处理存储容量格式
String[] total=fileSize(totalBlocks*blockSize);
String[] available=fileSize(availableBlocks*blockSize);
String[] used=fileSize(usedBlocks*blockSize);
int ss=Integer.parseInt(used[0]);
int mm=Integer.parseInt(total[0]);
int tt=ss*100/mm;
mProgressBar_SD_storage.setProgress(tt);
mTextView_SD_storage.setText(available[0]+available[1]);
}
}
//ROM容量显示
private void show_ROM_storage()
{
String path=Environment.getDataDirectory().getPath();
StatFs statFs=new StatFs(path);
long blockSize=statFs.getBlockSize();
long totalBlocks=statFs.getBlockCount();
long availableBlocks=statFs.getAvailableBlocks();
long usedBlocks=totalBlocks-availableBlocks;
//处理存储容量格式
String[] total=fileSize(totalBlocks*blockSize);
String[] available=fileSize(availableBlocks*blockSize);
String[] used=fileSize(usedBlocks*blockSize);
int ss=Integer.parseInt(used[0]);
int mm=Integer.parseInt(total[0]);
int tt=ss*100/mm;
mProgressBar_ROM_storage.setProgress(tt);
mTextView_ROM_storage.setText(available[0]+available[1]);
}
//处理存储容量格式
private String[] fileSize(long size)
{
String str="";
if(size>=1024)
{
str="KB";
size/=1024;
if(size>=1024)
{
str="MB";
size/=1024;
if(size>=1024)
{
str="GB";
size/=1024;
}
}
}
DecimalFormat formatter=new DecimalFormat();
formatter.setGroupingSize(3);
String[] result=new String[2];
result[0]=formatter.format(size);
result[1]=str;
return result;
}