From ad9c361fc4ae6e819a23cfc6d3dda8f2880aee64 Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 25 Nov 2024 19:31:29 +0800 Subject: [PATCH] =?UTF-8?q?DataSizeUtil=20=E6=96=B0=E5=A2=9Eformat?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=88issue#IB6UUX@Gitee=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/hutool/core/io/unit/DataSize.java | 4 +-- .../hutool/core/io/unit/DataSizeUtil.java | 17 +++++++++++++ .../dromara/hutool/core/io/unit/DataUnit.java | 25 ++++++++++++++++--- 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/io/unit/DataSize.java b/hutool-core/src/main/java/org/dromara/hutool/core/io/unit/DataSize.java index 60b880fb5..faa9047ea 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/io/unit/DataSize.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/io/unit/DataSize.java @@ -144,7 +144,7 @@ public final class DataSize implements Comparable { if(null == unit){ unit = DataUnit.BYTES; } - return new DataSize(Math.multiplyExact(amount, unit.size().toBytes())); + return new DataSize(Math.multiplyExact(amount, unit.getSize().toBytes())); } /** @@ -159,7 +159,7 @@ public final class DataSize implements Comparable { if(null == unit){ unit = DataUnit.BYTES; } - return new DataSize(amount.multiply(new BigDecimal(unit.size().toBytes())).longValue()); + return new DataSize(amount.multiply(new BigDecimal(unit.getSize().toBytes())).longValue()); } /** diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/io/unit/DataSizeUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/io/unit/DataSizeUtil.java index ca3208256..5d339742a 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/io/unit/DataSizeUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/io/unit/DataSizeUtil.java @@ -16,6 +16,7 @@ package org.dromara.hutool.core.io.unit; +import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.text.StrUtil; import java.text.DecimalFormat; @@ -79,4 +80,20 @@ public class DataSizeUtil { return new DecimalFormat("#,##0." + StrUtil.repeat('#', scale)) .format(size / Math.pow(1024, digitGroups)) + delimiter + unitNames[digitGroups]; } + + /** + * 根据单位,将文件大小转换为对应单位的大小 + * + * @param size 文件大小 + * @param fileDataUnit 单位 + * @return 大小 + * @since 5.8.34 + */ + public static String format(final Long size, final DataUnit fileDataUnit){ + if (size <= 0) { + return "0"; + } + final int digitGroups = ArrayUtil.indexOf(DataUnit.UNIT_NAMES,fileDataUnit.getSuffix()); + return new DecimalFormat("##0.##").format(size / Math.pow(1024, digitGroups)) + " " + DataUnit.UNIT_NAMES[digitGroups]; + } } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/io/unit/DataUnit.java b/hutool-core/src/main/java/org/dromara/hutool/core/io/unit/DataUnit.java index 2928e8f0f..d2da28259 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/io/unit/DataUnit.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/io/unit/DataUnit.java @@ -70,16 +70,35 @@ public enum DataUnit { public static final String[] UNIT_NAMES_SIMPLE = new String[]{"B", "K", "M", "G", "T", "P", "E"}; private final String suffix; - private final DataSize size; - + /** + * 构造 + * + * @param suffix 单位后缀 + * @param size 单位大小 + */ DataUnit(final String suffix, final DataSize size) { this.suffix = suffix; this.size = size; } - DataSize size() { + /** + * 单位后缀 + * + * @return 单位后缀 + * @since 5.8.34 + */ + public String getSuffix() { + return this.suffix; + } + + /** + * 单位大小 + * + * @return 单位大小 + */ + DataSize getSize() { return this.size; }