mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
!1299 windows的SMB协议判断绝对路径bug修复
Merge pull request !1299 from IzayoiYurin/v5-dev
This commit is contained in:
commit
7f91166016
@ -64,6 +64,10 @@ public class FileUtil extends PathUtil {
|
||||
*/
|
||||
private static final Pattern PATTERN_PATH_ABSOLUTE = Pattern.compile("^[a-zA-Z]:([/\\\\].*)?", Pattern.DOTALL);
|
||||
|
||||
/**
|
||||
* windows的共享文件夹开头
|
||||
*/
|
||||
private static final String SMB_PATH_PREFIX = "\\\\";
|
||||
|
||||
/**
|
||||
* 是否为Windows环境
|
||||
@ -1370,6 +1374,7 @@ public class FileUtil extends PathUtil {
|
||||
* <li>以/开头的路径</li>
|
||||
* <li>满足类似于 c:/xxxxx,其中祖母随意,不区分大小写</li>
|
||||
* <li>满足类似于 d:\xxxxx,其中祖母随意,不区分大小写</li>
|
||||
* <li>满足windows SMB协议格式,如: \\192.168.254.1\Share</li>
|
||||
* </ul>
|
||||
*
|
||||
* @param path 需要检查的Path
|
||||
@ -1381,7 +1386,7 @@ public class FileUtil extends PathUtil {
|
||||
}
|
||||
|
||||
// 给定的路径已经是绝对路径了
|
||||
return StrUtil.C_SLASH == path.charAt(0) || ReUtil.isMatch(PATTERN_PATH_ABSOLUTE, path);
|
||||
return StrUtil.C_SLASH == path.charAt(0) || path.startsWith(SMB_PATH_PREFIX) || ReUtil.isMatch(PATTERN_PATH_ABSOLUTE, path);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1667,7 +1672,7 @@ public class FileUtil extends PathUtil {
|
||||
}
|
||||
|
||||
//兼容Windows下的共享目录路径(原始路径如果以\\开头,则保留这种路径)
|
||||
if (path.startsWith("\\\\")) {
|
||||
if (path.startsWith(SMB_PATH_PREFIX)) {
|
||||
return path;
|
||||
}
|
||||
|
||||
|
@ -53,6 +53,30 @@ public class FileUtilTest {
|
||||
|
||||
path = FileUtil.getAbsolutePath("d:");
|
||||
assertEquals("d:", path);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@Disabled
|
||||
public void smbPathTest() {
|
||||
String smbPath = "\\\\192.168.254.88\\share\\rc-source";
|
||||
String parseSmbPath = FileUtil.getAbsolutePath(smbPath);
|
||||
assertEquals(smbPath, parseSmbPath);
|
||||
String dir = smbPath + "\\test";
|
||||
|
||||
FileUtil.mkdir(dir);
|
||||
assertTrue(FileUtil.exist(dir));
|
||||
String file = dir + "\\a.txt";
|
||||
FileUtil.touch(file);
|
||||
FileUtil.writeString("Hello SMB", file, "UTF-8");
|
||||
|
||||
String read = FileUtil.readString(file, "UTF-8");
|
||||
assertEquals(read, "Hello SMB");
|
||||
|
||||
assertEquals(1, FileUtil.loopFiles(dir).size());
|
||||
assertEquals(1, FileUtil.ls(dir).length);
|
||||
|
||||
FileUtil.del(dir);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Loading…
Reference in New Issue
Block a user