本文主要是介绍【工具类】计算机字节数转换为人类可读的大小,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近公司要做对象存储平台,从MINIO拿到的文件大小都是long类型的byte,于是,需要如下工具类
package cn.xdf.xadd.utils;import java.math.BigDecimal;/*** 计算文件大小工具类** @author zhurunhua* @since 2020-11-03 17:04*/
public enum FileSizeUtil {/*** 单例*/SINGLETON;private static final String BYTE = "字节";private static final String KB = "KB";private static final String MB = "MB";private static final String GB = "GB";private static final long KB_SIZE = 1024;private static final long MB_SIZE = 1048576;private static final long GB_SIZE = 1073741824;/*** 获取文件大小** @param size 字节长度* @return java.lang.String* @date 1/22/21 6:33 PM*/public String getHumanSize(long size) {String humanSize;//字节if (size < KB_SIZE) {humanSize = size + BYTE;return humanSize;}//KBelse if (size < MB_SIZE) {humanSize = getQuotient(size, KB_SIZE, 2) + KB;return humanSize;}//MBelse if (size < GB_SIZE) {humanSize = getQuotient(size, MB_SIZE, 2) + MB;return humanSize;}//GBelse {humanSize = getQuotient(size, GB_SIZE, 2) + GB;}return humanSize;}/*** 获取两数之商,四舍五入,保留指定小数位** @param dividend 被除数* @param divisor 除数* @param scale 保留小数位* @return java.lang.Double* @date 1/22/21 7:44 PM*/public Double getQuotient(long dividend, long divisor, int scale) {return BigDecimal.valueOf((double) dividend / divisor).setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue();}}
不知道是否有更优写法,先凑活用吧
使用方法:
public static void main(String[] args) {String humanSize = FileSizeUtil.SINGLETON.getHumanSize(12345678L);System.out.println(humanSize);}
输出:
OVER.
这篇关于【工具类】计算机字节数转换为人类可读的大小的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!