获取外部存储设备状态并计算其容量

获取外部存储设备状态并计算其容量

利用该类,直接调用即可,totalSpace为容量,freeSpace为剩余容量,例 String temp=MyUtil.convertStorage(MyUtil.getSDCardInfo().totalSpace);
package com.lhy.filemanage.myutil;
import java.io.File;
import android.util.Log;
public class MyUtil
{
  /**
  * SD卡数据bean
  * 
  * @author User
  */

  public static class SDCardInfo
 {
   public long totalSpace;
   public long freeSpace;
 }
  /**
  * 获取SD数据
  */

  public static SDCardInfo getSDCardInfo ()
 {
   // 获得外部存储设备的状态,首先判断外部存储设备是否存在
  String sDCardString = android.os.Environment.getExternalStorageState();
   if (sDCardString.equals(android.os.Environment.MEDIA_MOUNTED))
  {
    // 获得SD卡根路径
   File pathFile = android.os.Environment.getExternalStorageDirectory();
    try
   {
     // 获取StatFs对象
     // Android.os下的StatFs类主要用来获取文件系统的状态,能够获取sd卡的大小和剩余空间,获取系统内部空间也就是/system的大小和剩余空间等等。
     // StatFs获取的都是以block【块】为单位的
    android.os.StatFs statfs = new android.os.StatFs(pathFile.getPath());
     // 获取SDCard上BLOCK总数
     long nTotalBlocks = statfs.getBlockCount();
     // 获取SDCard上每个block的SIZE
     long nBlocSize = statfs.getBlockSize();
     // 获取可供程序使用的Block的数量
     long nAvailaBlock = statfs.getAvailableBlocks();
     // 获取剩下的所有Block的数量(包括预留的一般程序无法使用的块)
     long nFreeBlock = statfs.getFreeBlocks();
    SDCardInfo info = new SDCardInfo();
     // 计算SDCard 总容量大小MB
    info.totalSpace = nTotalBlocks * nBlocSize;
     // 计算 SDCard 剩余大小MB
    info.freeSpace = nAvailaBlock * nBlocSize;
     return info;
   }
    catch (IllegalArgumentException e)
   {
    Log.e( "lhy", e.toString());
   }
  }
   return null;
 }
  // storage, G M K B
  public static String convertStorage ( long size)
 {
   long kb = 1024;
   long mb = kb * 1024;
   long gb = mb * 1024;
   if (size > = gb)
  {
    return String.format( "%.1f GB", ( float) size / gb);
  }
   else if (size > = mb)
  {
    float f = ( float) size / mb;
    return String.format(f > 100 ? "%.0f MB" : "%.1f MB", f);
  }
   else if (size > = kb)
  {
    float f = ( float) size / kb;
    return String.format(f > 100 ? "%.0f KB" : "%.1f KB", f);
  }
   else
    return String.format( "%d B", size);
 }
}

转载于:https://www.cnblogs.com/leehyuan/p/3389586.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值