From f68a73538e24dcb06ecd5041de24e3bf99d28b64 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 14 Jul 2021 18:26:26 +0800 Subject: [PATCH] fix path --- hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java | 3 ++- hutool-core/src/test/java/cn/hutool/core/io/FileUtilTest.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) 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 731e3dca9..17a88ae0c 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 @@ -1479,7 +1479,8 @@ public class FileUtil extends PathUtil { } // issue#1703@Github - if(tops > 0){ + if(tops > 0 && StrUtil.isEmpty(prefix)){ + // 只有相对路径补充开头的..,绝对路径直接忽略之 while (tops-- > 0){ //遍历完节点发现还有上级标注(即开头有一个或多个..),补充之 // Normal path element found. 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 c628b68d1..a86317baf 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 @@ -147,7 +147,7 @@ public class FileUtilTest { Assert.assertEquals("/bar", FileUtil.normalize("/foo/../bar")); Assert.assertEquals("/bar/", FileUtil.normalize("/foo/../bar/")); Assert.assertEquals("/baz", FileUtil.normalize("/foo/../bar/../baz")); - Assert.assertEquals("/../", FileUtil.normalize("/../")); + Assert.assertEquals("/", FileUtil.normalize("/../")); Assert.assertEquals("foo", FileUtil.normalize("foo/bar/..")); Assert.assertEquals("../bar", FileUtil.normalize("foo/../../bar")); Assert.assertEquals("bar", FileUtil.normalize("foo/../bar")); @@ -155,7 +155,7 @@ public class FileUtilTest { Assert.assertEquals("/bar", FileUtil.normalize("//server/../bar")); Assert.assertEquals("C:/bar", FileUtil.normalize("C:\\foo\\..\\bar")); // - Assert.assertEquals("C:/../bar", FileUtil.normalize("C:\\..\\bar")); + Assert.assertEquals("C:/bar", FileUtil.normalize("C:\\..\\bar")); Assert.assertEquals("../../bar", FileUtil.normalize("../../bar")); Assert.assertEquals("C:/bar", FileUtil.normalize("/C:/bar")); Assert.assertEquals("C:", FileUtil.normalize("C:"));