From 52dad763a02c39e554228f94deb6422480a1c1ff Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 30 Jul 2024 10:05:55 +0800 Subject: [PATCH] fix code --- .../dromara/hutool/core/io/file/FileUtil.java | 27 ++++++++++++++----- .../core/io/resource/ResourceUtilTest.java | 14 +++++++++- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java index 9ef6a052a..4dce4d1e3 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java @@ -279,18 +279,27 @@ public class FileUtil extends PathUtil { // region ----- file and newFile /** - * 创建File对象,相当于调用new File(),不做任何处理 + * 创建File对象,相当于调用new File(),不做任何处理
+ * 相对于项目路径,如`project:./test`且项目路径为`/workspace/hutool/`,则读取`/workspace/hutool/test` * * @param path 文件路径,相对路径表示相对项目路径 * @return File - * @since 4.1.4 */ public static File newFile(final String path) { return new File(path); } /** - * 创建File对象,自动识别相对或绝对路径,相对路径将自动从ClassPath下寻找 + * 创建File对象,自动识别相对或绝对路径,规则如下: + * + *

+ * ,相对路径将自动从ClassPath下寻找
+ * 如果用户需要相对项目路径,则使用project:前缀 * * @param path 相对ClassPath的目录或者绝对路径目录 * @return File @@ -299,6 +308,12 @@ public class FileUtil extends PathUtil { if (null == path) { return null; } + + // 如果用户需要相对项目路径,则使用project:前缀 + if (path.startsWith("project:")) { + return new File(path); + } + return new File(getAbsolutePath(path)); } @@ -2543,7 +2558,7 @@ public class FileUtil extends PathUtil { * 写入数据到文件 * * @param data 数据 - * @param target 目标文件 + * @param target 目标文件 * @param off 数据开始位置 * @param len 数据长度 * @param isAppend 是否追加模式 @@ -2559,7 +2574,7 @@ public class FileUtil extends PathUtil { * 此方法会自动关闭输入流 * * @param target 目标文件 - * @param in 输入流 + * @param in 输入流 * @return 目标文件 * @throws IORuntimeException IO异常 */ @@ -2570,7 +2585,7 @@ public class FileUtil extends PathUtil { /** * 将流的内容写入文件 * - * @param target 目标文件 + * @param target 目标文件 * @param in 输入流 * @param isCloseIn 是否关闭输入流 * @return 目标文件 diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/io/resource/ResourceUtilTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/io/resource/ResourceUtilTest.java index a924c31eb..3221ac753 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/io/resource/ResourceUtilTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/io/resource/ResourceUtilTest.java @@ -12,8 +12,8 @@ package org.dromara.hutool.core.io.resource; -import org.dromara.hutool.core.io.file.FileUtil; import org.dromara.hutool.core.io.IoUtil; +import org.dromara.hutool.core.io.file.FileUtil; import org.dromara.hutool.core.text.StrUtil; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -45,4 +45,16 @@ public class ResourceUtilTest { Assertions.assertEquals("test.xml", resource.getName()); Assertions.assertTrue(StrUtil.isNotEmpty(resource.readUtf8Str())); } + + @Test + void getResourceTest() { + final Resource resource = ResourceUtil.getResource("file:test.xml"); + Assertions.assertNotNull(resource); + } + + @Test + void getResourceTest2() { + // project:开头表示基于项目的相对路径,此处无文件报错 + Assertions.assertThrows(NoResourceException.class, () -> ResourceUtil.getResource("project:test.xml")); + } }