From 10d84af86a6e156617d2c979f972f44f293f85be Mon Sep 17 00:00:00 2001 From: Looly Date: Sun, 8 Sep 2024 03:18:39 +0800 Subject: [PATCH] fix code --- .../hutool/core/io/unit/DataSizeUtil.java | 34 +++++++++++++++++-- .../dromara/hutool/core/io/unit/DataUnit.java | 4 +++ .../hutool/core/text/escape/XmlEscape.java | 4 +-- 3 files changed, 36 insertions(+), 6 deletions(-) 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 1399dba44..ca3208256 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,8 @@ package org.dromara.hutool.core.io.unit; +import org.dromara.hutool.core.text.StrUtil; + import java.text.DecimalFormat; /** @@ -44,11 +46,37 @@ public class DataSizeUtil { * @return 大小 */ public static String format(final long size) { + return format(size, false); + } + + /** + * 可读的文件大小
+ * 参考 http://stackoverflow.com/questions/3263892/format-file-size-as-mb-gb-etc + * + * @param size Long类型大小 + * @param useSimpleName 是否使用简写,例如:1KB 简写成 1K + * @return 大小 + */ + public static String format(final long size, final boolean useSimpleName) { + return format(size, 2, useSimpleName ? DataUnit.UNIT_NAMES_SIMPLE : DataUnit.UNIT_NAMES, StrUtil.SPACE); + } + + /** + * 可读的文件大小
+ * 参考 http://stackoverflow.com/questions/3263892/format-file-size-as-mb-gb-etc + * + * @param size Long类型大小 + * @param scale 小数点位数,四舍五入 + * @param unitNames 单位数组 + * @param delimiter 数字和单位的分隔符 + * @return 大小 + */ + public static String format(final long size, final int scale, final String[] unitNames, final String delimiter) { if (size <= 0) { return "0"; } - final int digitGroups = Math.min(DataUnit.UNIT_NAMES.length-1, (int) (Math.log10(size) / Math.log10(1024))); - return new DecimalFormat("#,##0.##") - .format(size / Math.pow(1024, digitGroups)) + " " + DataUnit.UNIT_NAMES[digitGroups]; + final int digitGroups = Math.min(unitNames.length - 1, (int) (Math.log10(size) / Math.log10(1024))); + return new DecimalFormat("#,##0." + StrUtil.repeat('#', scale)) + .format(size / Math.pow(1024, digitGroups)) + delimiter + unitNames[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 a4eb306bd..2928e8f0f 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 @@ -64,6 +64,10 @@ public enum DataUnit { * 单位名称列表 */ public static final String[] UNIT_NAMES = new String[]{"B", "KB", "MB", "GB", "TB", "PB", "EB"}; + /** + * 单位名称列表(简写) + */ + public static final String[] UNIT_NAMES_SIMPLE = new String[]{"B", "K", "M", "G", "T", "P", "E"}; private final String suffix; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/text/escape/XmlEscape.java b/hutool-core/src/main/java/org/dromara/hutool/core/text/escape/XmlEscape.java index 277d991fe..f98977ce8 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/text/escape/XmlEscape.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/text/escape/XmlEscape.java @@ -21,15 +21,13 @@ import org.dromara.hutool.core.text.replacer.ReplacerChain; /** * XML特殊字符转义
- * 见: - * https://stackoverflow.com/questions/1091945/what-characters-do-i-need-to-escape-in-xml-documents
+ * 见:https://stackoverflow.com/questions/1091945/what-characters-do-i-need-to-escape-in-xml-documents
* *
  * 	 & (ampersand) 替换为 &amp;
  * 	 < (less than) 替换为 &lt;
  * 	 > (greater than) 替换为 &gt;
  * 	 " (double quote) 替换为 &quot;
- * 	 ' (single quote / apostrophe) 替换为 &apos;
  * 
* * @author looly