枚举 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
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);
}
5月 13, 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