Java数据单位转换
Java数据单位转换
Java 将byte数据量转换为带适合单位的值,Java9以上适用
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.regex.Pattern;
/**
* Convert byte values to values with appropriate data units
*/
public class Conversion {
private static final BigDecimal span = new BigDecimal(1024);
public static final String maxLevelBytes = "1329227995784915872903807060280344576";
private static final String[] units = {"B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB", "DB", "NB", "DB", "CB"};
private static final Pattern NUMBER_PATTERN = Pattern.compile("-?\\d+(\\.\\d+)?");
/**
*
* @param bytes Byte data volume of data
* @return Value with appropriate data units
*/
public static String UnitConversion(String bytes) {
if (isNumeric2(bytes)){
return "0B";
}
BigDecimal bigDecimal = new BigDecimal(bytes);
if (bigDecimal.compareTo(BigDecimal.ZERO) <= 0) {
return "0B";
}
BigDecimal level = new BigDecimal(maxLevelBytes);
int i;
for (i = units.length - 1; i >= 0; i--) {
if (bigDecimal.compareTo(level) > 0) {
break;
}
level = level.divide(span, 0, RoundingMode.DOWN);
}
return bigDecimal.divide(level, 2, RoundingMode.DOWN).toString() + units[i];
}
public static boolean isNumeric2(String str) {
return str != null && NUMBER_PATTERN.matcher(str).matches();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?