工具-----计算机容量单位换算

我们可以通过File来获取本机的盘信息。执行下面这段代码得出的是容量的位信息,我们看起来很难受,所以我们可以自己写一个转化的工具,将B(字节)转化为 KB、M、GB 

File[] drivers = File.listRoots();
        for (File f : drivers) {
            System.out.println(f);
            System.out.println(f.getTotalSpace());;
            System.out.println(f.getFreeSpace());
            System.out.println("-------------------------");
        }

 下面给出代码:

public static final String calculateCapacity(long size) {
                //如果数字长度小于1024,就是为字节本身的单位了。
		if (size < 1024) {
			return String.valueOf(size) + "B";
		}
		//走到这一步必然是大于1024即>=1M的,我们让1左移20位即是小于(1024*1024)B的即KB
		if (size < (1 << 20)) {
                        //1.它右移10位即除1024得到KB的大小
                        //2.取出它与0X3FF相与即与(0000 0011 1111 1111)相与即得到后十位&
                        //3.(size & 0x03FF)与1024相除得到占1024比率因为本身就要写在.后面所以*100,为了防止出现本应是两位小数(比如是52B/1024B=0.050...再去*100=5但实际应该是.05)所以加100再去substring取出后两位.
                        //4.后面的if判断同此。
			return String.valueOf(size >> 10) + "." 
					+ String.valueOf((int)((size & 0x03FF) / 1024.0 * 100)+ 100).substring(1) + "KB";
		}
                //(1024*1024*1024) = 1 << 30
		if (size < (1 << 30)) {
			return String.valueOf(size >> 20) + "." 
					+ String.valueOf((int)((size & 0xFFFFF) / (1024.0*1024.0)* 100) + 100).substring(1) + "MB";
		}
                //(1024.0*1024.0*1024.0) = 1 << 40
		if (size < (1L << 40)) {
			return String.valueOf(size >> 30) + "." 
					+ String.valueOf((int)((size & 0x3FFFFFFF) / (1024.0*1024.0*1024.0) * 100) + 100).substring(1) + "GB";
		}
		return null;
	}

执行结果:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值