diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileNameUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileNameUtil.java index d306c62c0..6663d69d5 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileNameUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileNameUtil.java @@ -330,6 +330,7 @@ public class FileNameUtil { *
* 栗子: @@ -360,6 +361,11 @@ public class FileNameUtil { return null; } + //兼容Windows下的共享目录路径(原始路径如果以\\开头,则保留这种路径) + if (path.startsWith("\\\\")) { + return path; + } + // 兼容Spring风格的ClassPath路径,去除前缀,不区分大小写 String pathToUse = StrUtil.removePrefixIgnoreCase(path, URLUtil.CLASSPATH_URL_PREFIX); // 去除file:前缀 @@ -374,10 +380,6 @@ public class FileNameUtil { pathToUse = pathToUse.replaceAll("[/\\\\]+", StrUtil.SLASH); // 去除开头空白符,末尾空白符合法,不去除 pathToUse = StrUtil.trimPrefix(pathToUse); - //兼容Windows下的共享目录路径(原始路径如果以\\开头,则保留这种路径) - if (path.startsWith("\\\\")) { - pathToUse = "\\" + pathToUse; - } String prefix = StrUtil.EMPTY; final int prefixIndex = pathToUse.indexOf(StrUtil.COLON); diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java index c2884bb3c..f1e11712b 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java @@ -1399,6 +1399,7 @@ public class FileUtil extends PathUtil { *
* 栗子: diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/io/file/FileNameUtilTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/io/file/FileNameUtilTest.java index 398adf640..b0e8be007 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/io/file/FileNameUtilTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/io/file/FileNameUtilTest.java @@ -38,6 +38,8 @@ public class FileNameUtilTest { Assertions.assertEquals("../../bar", FileNameUtil.normalize("../../bar")); Assertions.assertEquals("C:/bar", FileNameUtil.normalize("/C:/bar")); Assertions.assertEquals("C:", FileNameUtil.normalize("C:")); + + // issue#3253,smb保留格式 Assertions.assertEquals("\\/192.168.1.1/Share/", FileNameUtil.normalize("\\\\192.168.1.1\\Share\\")); }