diff --git a/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java index 2eccd286e..7b06ca8be 100644 --- a/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java @@ -3194,7 +3194,7 @@ public class FileUtil extends PathUtil { public static boolean isSub(File parent, File sub) { Assert.notNull(parent); Assert.notNull(sub); - return sub.toPath().startsWith(parent.toPath()); + return sub.toPath().toAbsolutePath().normalize().startsWith(parent.toPath().toAbsolutePath().normalize()); } /** diff --git a/hutool-core/src/test/java/cn/hutool/core/io/FileUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/io/FileUtilTest.java index 43de63973..2980d0890 100644 --- a/hutool-core/src/test/java/cn/hutool/core/io/FileUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/io/FileUtilTest.java @@ -384,4 +384,11 @@ public class FileUtilTest { File file2 = new File("d:/test2/aaa"); Assert.assertFalse(FileUtil.isSub(file, file2)); } + + @Test + public void isSubRelativeTest() { + File file = new File(".."); + File file2 = new File("."); + Assert.assertTrue(FileUtil.isSub(file, file2)); + } }