废话不多说,先上代码:
/**
* 获取手机内部空间大小
* @return
*/
public static double getTotalInternalStorgeSize() {
File path = Environment.getExternalStorageDirectory();
StatFs mStatFs = new StatFs(path.getPath());
long blockSize = mStatFs.getBlockSize();
long totalBlocks = mStatFs.getBlockCount();
DecimalFormat df = new DecimalFormat("#.00");
// 这里忽略至小数点后两位,不做四舍五入
return Double.valueOf(df.format(((totalBlocks * blockSize) / 1024.0 / 1024.0 / 1024.0)));
}
/**
* 获取手机内部可用空间大小
* @return
*/
public static double getAvailableInternalStorgeSize() {
File path = Environment.getExternalStorageDirectory();
StatFs mStatFs = new StatFs(path.getPath());
long blockSize = mStatFs.getBlockSize();
long availableBlocks = mStatFs.getAvailableBlocks();
DecimalFormat df = new DecimalFormat("#.00");
// 这里忽略至小数点后两位,不做四舍五入
return Double.valueOf(df.format(((availableBlocks * blockSize) / 1024.0 / 1024.0 / 1024.0)));
}
网上搜的很多文章发现计算出来的存储空间大小总是偏大,经过一位大神的指点发现是文件的路径有问题,网上搜的很多文章的文件路径为:
// 这个路径下可能存有系统某些文件,导致计算获得的存储空间偏大
String path=Environment.getDataDirectory();
而注意上面我写的代码,文件路径为:
File path = Environment.getExternalStorageDirectory();