一.写一个根据路径获取摸个目录的可用空间的方法(也可以分区的个数*分区的大小获得该目录的总的空间大小)
/**
* 根据路劲获取某个目录的可用空间
*
* @param path
* 文件的路径
* @return result 返回该目录的可用空间大小
*/
private long getAvailSpace(String path) {
StatFs statFs = new StatFs(path);
statFs.getBlockCount();// 获取分区的个数
int size = statFs.getBlockSize();// 获取分区的大小
int blocks = statFs.getAvailableBlocks();// 获取可用分区的个数
long result = blocks * size;
return result;
}二.获取得到的空间的大小是long类型的
// sd卡上可用空间的大小
long sdsize = getAvailSpace(Environment.getExternalStorageDirectory()
.getAbsolutePath());
// 手机内存中可用空间的大小
long romsize = getAvailSpace(Environment.getDataDirectory()
.getAbsolutePath());
Log.i(TAG, "SD卡上可用的空间为:" + sdsize + "手机内存中可用空间为:" + romsize);三.格式化一下获得的数据,显示到界面上
// 把获取到的sd卡上和手机内存中可用空间的大小显示在界面中
// Formatter.formatFileSize()——一个区域化的文件大小格式化工具。
tv_avail_sd.setText("SD卡可用:"
+ Formatter.formatFileSize(AppManagerActivity.this, sdsize));
tv_avail_rom.setText("内存可用:"
+ Formatter.formatFileSize(AppManagerActivity.this, romsize));
个人总结记忆:
要获取某个空间的大小,首先要知道该空间的具体位置(path),根据path找到该空间(new StatFs(path)),因为硬盘是扇形分区,每个分区上有柱头的,所以可以根据该空间(statFs)得到每个分区的大小(getBlockSize()),还有分区的个数(getBlockCount()),以及可用分区的个数(getAvailableBlocks()),最后根据各种算式就能得到相应的大小。
本文介绍了如何在Android中获取SD卡和内存的可用空间大小。通过指定路径创建StatFs对象,利用getBlockCount()和getAvailableBlocks()方法计算可用空间,并进行格式化显示。
1459

被折叠的 条评论
为什么被折叠?



