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

This commit is contained in:
Looly 2023-08-10 22:03:28 +08:00
parent 48a93c2fbe
commit c768831b53
3 changed files with 9 additions and 4 deletions

View File

@ -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);

View File

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

View File

@ -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#3253smb保留格式
Assertions.assertEquals("\\/192.168.1.1/Share/", FileNameUtil.normalize("\\\\192.168.1.1\\Share\\"));
}