mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-24 18:04:54 +08:00
修复FileUtil无法正确识别Smb网络存储的路径问题
This commit is contained in:
parent
48a93c2fbe
commit
c768831b53
@ -330,6 +330,7 @@ public class FileNameUtil {
|
||||
* <li>2. 多个 / 转换为一个 /</li>
|
||||
* <li>3. 去除左边空格</li>
|
||||
* <li>4. .. 和 . 转换为绝对路径,当..多于已有路径时,直接返回根路径</li>
|
||||
* <li>5. SMB路径保留,如\\127.0.0.0\a\b.zip</li>
|
||||
* </ol>
|
||||
* <p>
|
||||
* 栗子:
|
||||
@ -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);
|
||||
|
@ -1399,6 +1399,7 @@ public class FileUtil extends PathUtil {
|
||||
* <li>2. 多个 / 转换为一个 /</li>
|
||||
* <li>3. 去除左边空格</li>
|
||||
* <li>4. .. 和 . 转换为绝对路径,当..多于已有路径时,直接返回根路径</li>
|
||||
* <li>5. SMB路径保留,如\\127.0.0.0\a\b.zip</li>
|
||||
* </ol>
|
||||
* <p>
|
||||
* 栗子:
|
||||
|
@ -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\\"));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user