修复FileUtil无法正确识别Smb网络存储的路径问题

This commit is contained in:
Looly
2023-08-10 22:03:16 +08:00
parent d2beedbf78
commit e58a6055d6
4 changed files with 53 additions and 5 deletions

View File

@@ -1607,6 +1607,11 @@ public class FileUtil extends PathUtil {
return null;
}
//兼容Windows下的共享目录路径原始路径如果以\\开头,则保留这种路径)
if (path.startsWith("\\\\")) {
return path;
}
// 兼容Spring风格的ClassPath路径去除前缀不区分大小写
String pathToUse = StrUtil.removePrefixIgnoreCase(path, URLUtil.CLASSPATH_URL_PREFIX);
// 去除file:前缀
@@ -1621,10 +1626,6 @@ public class FileUtil extends PathUtil {
pathToUse = pathToUse.replaceAll("[/\\\\]+", StrUtil.SLASH);
// 去除开头空白符,末尾空白符合法,不去除
pathToUse = StrUtil.trimStart(pathToUse);
//兼容Windows下的共享目录路径原始路径如果以\\开头,则保留这种路径)
if (path.startsWith("\\\\")) {
pathToUse = "\\" + pathToUse;
}
String prefix = StrUtil.EMPTY;
int prefixIndex = pathToUse.indexOf(StrUtil.COLON);

View File

@@ -182,7 +182,9 @@ public class FileUtilTest {
Assert.assertEquals("../../bar", FileUtil.normalize("../../bar"));
Assert.assertEquals("C:/bar", FileUtil.normalize("/C:/bar"));
Assert.assertEquals("C:", FileUtil.normalize("C:"));
Assert.assertEquals("\\/192.168.1.1/Share/", FileUtil.normalize("\\\\192.168.1.1\\Share\\"));
// issue#3253smb保留格式
Assert.assertEquals("\\\\192.168.1.1\\Share\\", FileUtil.normalize("\\\\192.168.1.1\\Share\\"));
}
@Test