您的位置:首页 > 移动开发 > Android开发

android获取SD卡剩余空间及注意事项

2015-05-14 16:17 323 查看
获取SD卡剩余空间方法。

String storage = Environment.getExternalStorageDirectory().getAbsolutePath();
StatFs fs = new StatFs(storage);
//可用的blocks的数量
long availableBolocks=fs.getAvailableBlocks();
//单个block的大小
long blockSize=fs.getBlockSize();

//sd卡的剩余空间
long available=availableBolocks*blockSize;


fs.getBlockCountLong();

//sd卡总的block数量

注意getAvailableBlocks已弃用,从api 18开始用getAvailableBlocksLong.

弃用方法内部实现:

@Deprecated
public int getAvailableBlocks() {
return (int) mStat.f_bavail;
}

可以看出其将其转化为int型。使用弃用方法在内存大时容易造成内存溢出,导致得到的值为负值,但在Log打印时打印出来的却不是 负值,导致在进行一些数值比较时,引发一些外表看起来不可思议的事情,其实本质原因就是赋为int超出其取值范围了,因为你使用时最好将其转化为long类型,或者使用getAvailableBlocksLong;其没有将其强转为int,因此安全些。

虽然是个小问题但还是养成良好的习惯,记录一下,嘎嘎。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: