diff --git a/hutool-core/src/main/java/cn/hutool/core/io/unit/DataSizeUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/unit/DataSizeUtil.java index e38e87d42..f786f37e6 100644 --- a/hutool-core/src/main/java/cn/hutool/core/io/unit/DataSizeUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/unit/DataSizeUtil.java @@ -16,7 +16,7 @@ public class DataSizeUtil { * @param text 数据大小字符串,类似于:12KB, 5MB等 * @return bytes大小 */ - public long parse(String text) { + public static long parse(String text) { return DataSize.parse(text).toBytes(); } diff --git a/hutool-core/src/main/java/cn/hutool/core/io/unit/DataUnit.java b/hutool-core/src/main/java/cn/hutool/core/io/unit/DataUnit.java index 3a7d1ae53..f01fe2851 100644 --- a/hutool-core/src/main/java/cn/hutool/core/io/unit/DataUnit.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/unit/DataUnit.java @@ -1,5 +1,7 @@ package cn.hutool.core.io.unit; +import cn.hutool.core.util.StrUtil; + /** * 数据单位封装
* 此类来自于:Spring-framework @@ -69,7 +71,8 @@ public enum DataUnit { */ public static DataUnit fromSuffix(String suffix) { for (DataUnit candidate : values()) { - if (candidate.suffix.equalsIgnoreCase(suffix)) { + // 支持类似于 3MB,3M,3m等写法 + if (StrUtil.startWithIgnoreCase(candidate.suffix, suffix)) { return candidate; } } diff --git a/hutool-core/src/test/java/cn/hutool/core/io/unit/DataSizeUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/io/unit/DataSizeUtilTest.java new file mode 100644 index 000000000..c7df9e28b --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/io/unit/DataSizeUtilTest.java @@ -0,0 +1,22 @@ +package cn.hutool.core.io.unit; + +import org.junit.Assert; +import org.junit.Test; + +public class DataSizeUtilTest { + + @Test + public void parseTest(){ + long parse = DataSizeUtil.parse("3M"); + Assert.assertEquals(3145728, parse); + + parse = DataSizeUtil.parse("3m"); + Assert.assertEquals(3145728, parse); + + parse = DataSizeUtil.parse("3MB"); + Assert.assertEquals(3145728, parse); + + parse = DataSizeUtil.parse("3mb"); + Assert.assertEquals(3145728, parse); + } +}