diff --git a/hutool-core/src/main/java/cn/hutool/core/io/file/PathUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/file/PathUtil.java index f4f11e80f..099751144 100644 --- a/hutool-core/src/main/java/cn/hutool/core/io/file/PathUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/file/PathUtil.java @@ -488,7 +488,8 @@ public class PathUtil { Assert.notNull(src, "Src path must be not null !"); Assert.notNull(target, "Target path must be not null !"); - if(equals(src, target)){ + // issue#2893 target 不存在导致NoSuchFileException + if (Files.exists(target) && equals(src, target)) { // issue#2845,当用户传入目标路径与源路径一致时,直接返回,否则会导致删除风险。 return target; } diff --git a/hutool-core/src/test/java/cn/hutool/core/io/file/PathUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/io/file/PathUtilTest.java index 9019d86f5..78c7cd43a 100644 --- a/hutool-core/src/test/java/cn/hutool/core/io/file/PathUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/io/file/PathUtilTest.java @@ -5,6 +5,7 @@ import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; +import java.io.File; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; @@ -78,4 +79,13 @@ public class PathUtilTest { String contentType = FileUtil.getMimeType("a001.7z"); Assert.assertEquals("application/x-7z-compressed", contentType); } + + /** + * issue#2893 target不存在空导致异常 + */ + @Test + @Ignore + public void moveTest2(){ + PathUtil.move(Paths.get("D:\\project\\test1.txt"), Paths.get("D:\\project\\test2.txt"), false); + } }