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 { *
  • 2. 多个 / 转换为一个 /
  • *
  • 3. 去除左边空格
  • *
  • 4. .. 和 . 转换为绝对路径,当..多于已有路径时,直接返回根路径
  • + *
  • 5. SMB路径保留,如\\127.0.0.0\a\b.zip
  • * *

    * 栗子: @@ -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 { *

  • 2. 多个 / 转换为一个 /
  • *
  • 3. 去除左边空格
  • *
  • 4. .. 和 . 转换为绝对路径,当..多于已有路径时,直接返回根路径
  • + *
  • 5. SMB路径保留,如\\127.0.0.0\a\b.zip
  • * *

    * 栗子: 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\\")); }