有时我们开Android项目开发时会用到文件存储或上传文件的一些操作,那么我们前提是要获取到该存储设备的大小,以方便于与我们需要操作的文件的大小做比较,如果操作的文件大小小于存储空间,那么就可以继续操作,反之则不能进行操作

该方法获取存储设备的总大小

/**
* 获取存储设备总存储空间
*
* @param path 存储设备目录对象
*/
private String getTotalSize(File path) {
// 创建StatFs对象
StatFs stat = new StatFs(path.getPath());
// 获取每个存储快的大小
long blockSize = stat.getBlockSize();
// 获取所有的存储块
long blockCount = stat.getBlockCount();
// 获取内部存储的总大小
long totalSize = blockCount * blockSize;
// 将long类型转为字符串
String totalStr = Formatter.formatFileSize(this, totalSize);
return totalStr;
}

获取存储设备的可用大小

/**
* 获取可用存储空间
* @param path 存储设备目录对象
* @return
*/
private String getAvailSize(File path) {
// 创建StatFs对象
StatFs stat = new StatFs(path.getPath());
// 获取每个存储快的大小
long blockSize = stat.getBlockSize();
// 获取可用的存储块
long availableBlocks = stat.getAvailableBlocks();
// 获取内部存储的可用大小
long availSize = availableBlocks * blockSize;
// 将long类型转为字符串
String availStr = Formatter.formatFileSize(this, availSize);
return availStr;
}

在主方法调用

private TextView tvSdCard, tvPhoneSpace;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 取消标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
// 获取TextView对象
tvSdCard = (TextView) findViewById(R.id.tv_sd_card_info);
tvPhoneSpace = (TextView) findViewById(R.id.tv_data_size);
// 获取外部存储目录对象
File externalStorage = Environment.getExternalStorageDirectory();
// 获取内部存储目录对象
File internalStorage = Environment.getDataDirectory();
//获取外部存储设备总空间
String externalTotalSize=getTotalSize(externalStorage);
//获取外部存储设备可以空间
String externalAvailSize=getAvailSize(externalStorage);
//设置TextView信息
tvSdCard.setText("外部存储设备总空间:"+externalTotalSize+"\n可用空间:"+externalAvailSize);
//获取内部存储设备总空间
String internalTotalSize=getTotalSize(internalStorage);
//获取内部存储设备可用空间
String internalAvailSize=getAvailSize(internalStorage);
//设置TextView信息
tvPhoneSpace.setText("内部存储设备总空间:"+internalTotalSize+"\n可用空间:"+internalAvailSize);
}


更多相关文章

  1. Android中Intent传递自定义对象类型的数据
  2. android中的设计模式--观察者模式
  3. Android(安卓)-- IPC通信机制之一Binder简介
  4. Android应用管理一 -- APK包的安装、卸载和优化(PackageManagerSe
  5. Android与webservice进行实体对象的传递
  6. Android(安卓)自定义Spinner字体、颜色、大小
  7. Android的线程和线程池————读书笔记
  8. Android数据格式解析对象JSON用法
  9. Android:子线程向UI主线程发送消息

随机推荐

  1. android的代码性能优化
  2. Android: Failed to convert @drawable/p
  3. eclipse android jni 和 ndk以及调用过程
  4. Android binder -serviceManager
  5. Android之条码扫描二维码扫描
  6. Android学习笔记之数据库
  7. Android动画之view动画
  8. Android动画TweenAnimation的使用方法
  9. windows下Appium安装教程
  10. 第三部分 优秀项目