格式化容量或速度

枚举 StorageSpeedUnit

enum StorageSpeedUnit{
		NUMERIC,STORAGE,SPEED;
}

日志 Loggable

public static void logger(String pattern,Object... paramArray) {
	String cls = MethodHandles.lookup().lookupClass().getName();
	System.Logger logger = System.getLogger(cls);
	String msg = String.format(pattern,paramArray);
	logger.log(System.Logger.Level.INFO,msg);
}

方法 formatStorageUnit

/**
 * @title formatStorageUnit 存储容量或速度格式化
 * @param storageByteSize 存储大小或速度,单位字节byte
 * @param su enum StorageSpeedUnit
 * NUMERIC:仅显示数字;STORAGE:数字加容量标识;SPEED:数字加速度标识
 * @return String 格式化后的目标字符串
 * @create 2024-05-13 21:09:43
 * @author elf
 * @since 1.0.0
 */
public static String formatStorageUnit(
	final long storageByteSize,StorageSpeedUnit su) {
	if (storageByteSize < 0) {
		return "0";
	}
	String[] unitArray = new String[]{};
	switch (su) {
		case null -> {
			break;
		}
		case NUMERIC -> {
			break;
		}
		case STORAGE -> unitArray = new String[]{"B","KB","MB","GB","TB"};
		case SPEED -> unitArray = new String[]{"B/s","KB/s","MB/s","GB/s","TB/s"};
		default -> {
			break;
		}
	}
	
	int digitGroup = (int)(Math.log10(storageByteSize) / Math.log10(1024));
	double number = storageByteSize / Math.pow(1024,digitGroup);
	var formatter =  new DecimalFormat("#,##0.##");
	
	if (unitArray.length == 0) {
		return formatter.format(number);
	} else {
		return formatter.format(number) + " " + unitArray[digitGroup];
	}
}

测试

public static void main(String[] sa) {
	var formatSize = 10737418;
	var formatEmpty = formatStorageUnit(formatSize,null);
	var formatNumeric = formatStorageUnit(formatSize,StorageSpeedUnit.NUMERIC);
	var formatStorage = formatStorageUnit(formatSize,StorageSpeedUnit.STORAGE);
	var formatSpeed = formatStorageUnit(formatSize,StorageSpeedUnit.SPEED);
	var pattern = "empty:%s,numeric:%s,storage:%s,speed:%s";
    Loggable.logger(pattern,formatEmpty,formatNumeric,formatStorage,formatSpeed); 
}
513, 2024 9:16:38 下午 com.elf.core.logger.Loggable logger
信息: empty:10.24,numeric:10.24,storage:10.24 MB,speed:10.24 MB/s
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值