From c768831b535d17beb60c530abccd1c6945ff035c Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 10 Aug 2023 22:03:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DFileUtil=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E8=AF=86=E5=88=ABSmb=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E7=9A=84=E8=B7=AF=E5=BE=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/hutool/core/io/file/FileNameUtil.java | 10 ++++++---- .../java/org/dromara/hutool/core/io/file/FileUtil.java | 1 + .../dromara/hutool/core/io/file/FileNameUtilTest.java | 2 ++ 3 files changed, 9 insertions(+), 4 deletions(-) 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\\")); }