From a54335aaa5e58e497d379fd9d76a2afb3dd0dfae Mon Sep 17 00:00:00 2001 From: duanluan Date: Fri, 28 Oct 2022 18:14:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20FileUtils.getClassRootPath=20=E9=87=8D?= =?UTF-8?q?=E5=91=BD=E5=90=8D=E4=B8=BA=20getResourcePath=EF=BC=8C=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E2=80=9Cfile:/=E2=80=9D=E5=BC=80=E5=A4=B4=E7=9A=84?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E6=97=B6=E4=B8=8D=E6=88=AA=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/docs/999-incompatible-changes.md | 2 ++ src/main/java/top/zhogjianhao/FileUtils.java | 29 +++++++++++++------ .../top/zhogjianhao/junit/FileUtilsTest.java | 10 +++---- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/docs/docs/999-incompatible-changes.md b/docs/docs/999-incompatible-changes.md index 8f454e5..928ff56 100644 --- a/docs/docs/999-incompatible-changes.md +++ b/docs/docs/999-incompatible-changes.md @@ -1,5 +1,7 @@ # 不兼容变更 +* 1.9.4: + * `FileUtils.getClassRootPath`重命名为`getResourcePath`。 * 1.8.1: * `date.DateFeature`中静态变量的赋值方式由直接赋值改为通过`set`、`setAlways`方法赋值; * `DateUtils.defaultLocalDatePattern`移至`DateConstant.DEFAULT_LOCAL_DATE_PATTERN`; diff --git a/src/main/java/top/zhogjianhao/FileUtils.java b/src/main/java/top/zhogjianhao/FileUtils.java index aa3f109..4c937a5 100644 --- a/src/main/java/top/zhogjianhao/FileUtils.java +++ b/src/main/java/top/zhogjianhao/FileUtils.java @@ -7,7 +7,6 @@ import top.zhogjianhao.regex.RegExUtils; import java.io.File; import java.io.IOException; -import java.util.Objects; import java.util.regex.Pattern; @Slf4j @@ -55,9 +54,13 @@ public class FileUtils extends org.apache.commons.io.FileUtils { * @param clazz 类 * @return 类的根路径(不含包) */ - public static String getClassRootPath(@NonNull final Class clazz) { - if(SystemUtils.IS_OS_WINDOWS){ - return clazz.getClassLoader().getResource("").getPath().substring(1); + public static String getResourcePath(@NonNull final Class clazz) { + if (SystemUtils.IS_OS_WINDOWS) { + String result = clazz.getClassLoader().getResource("").getPath(); + if (result.startsWith("/")) { + result = result.substring(1); + } + return result; } return clazz.getClassLoader().getResource("").getPath(); } @@ -67,9 +70,13 @@ public class FileUtils extends org.apache.commons.io.FileUtils { * * @return 类的根路径(不含包) */ - public static String getClassRootPath() { - if(SystemUtils.IS_OS_WINDOWS){ - return Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(1); + public static String getResourcePath() { + if (SystemUtils.IS_OS_WINDOWS) { + String result = Thread.currentThread().getContextClassLoader().getResource("").getPath(); + if (result.startsWith("/")) { + result = result.substring(1); + } + return result; } return Thread.currentThread().getContextClassLoader().getResource("").getPath(); } @@ -81,8 +88,12 @@ public class FileUtils extends org.apache.commons.io.FileUtils { * @return 类路径 */ public static String getClassPath(@NonNull final Class clazz) { - if(SystemUtils.IS_OS_WINDOWS){ - return clazz.getResource("").getPath().substring(1); + if (SystemUtils.IS_OS_WINDOWS) { + String result = clazz.getResource("").getPath(); + if (result.startsWith("/")) { + result = result.substring(1); + } + return result; } return clazz.getResource("").getPath(); } diff --git a/src/test/java/top/zhogjianhao/junit/FileUtilsTest.java b/src/test/java/top/zhogjianhao/junit/FileUtilsTest.java index efa9ac5..f609af8 100644 --- a/src/test/java/top/zhogjianhao/junit/FileUtilsTest.java +++ b/src/test/java/top/zhogjianhao/junit/FileUtilsTest.java @@ -15,15 +15,15 @@ public class FileUtilsTest { private static final String PROJECT_PATH_SLASH = FileUtils.getUserDir().replace("\\", "/"); public static void main(String[] args) { - System.out.println(FileUtils.getClassRootPath()); - System.out.println(FileUtils.getClassRootPath(FileUtilsTest.class)); + System.out.println(FileUtils.getResourcePath()); + System.out.println(FileUtils.getResourcePath(FileUtilsTest.class)); System.out.println(FileUtils.getClassPath(FileUtilsTest.class)); } @DisplayName("getPath:获取各种路径") @Test void getPath() { - assertThrows(NullPointerException.class, () -> FileUtils.getClassRootPath(null)); + assertThrows(NullPointerException.class, () -> FileUtils.getResourcePath(null)); assertThrows(NullPointerException.class, () -> FileUtils.getClassPath(null)); assertThrows(NullPointerException.class, () -> FileUtils.getDirPathAndNameByPath(null)); assertThrows(NullPointerException.class, () -> FileUtils.getDirPathByPath(null)); @@ -31,8 +31,8 @@ public class FileUtilsTest { assertEquals(PROJECT_PATH, FileUtils.getUserDir()); assertEquals(PROJECT_PATH, FileUtils.getProjectPath()); - assertEquals(PROJECT_PATH_SLASH + "/target/test-classes/", FileUtils.getClassRootPath()); - assertEquals(PROJECT_PATH_SLASH + "/target/test-classes/", FileUtils.getClassRootPath(FileUtilsTest.class)); + assertEquals(PROJECT_PATH_SLASH + "/target/test-classes/", FileUtils.getResourcePath()); + assertEquals(PROJECT_PATH_SLASH + "/target/test-classes/", FileUtils.getResourcePath(FileUtilsTest.class)); assertEquals(PROJECT_PATH_SLASH + "/target/test-classes/top/zhogjianhao/junit/", FileUtils.getClassPath(FileUtilsTest.class)); assertEquals("1.txt", FileUtils.getDirPathAndNameByPath("1.txt")[1]); -- GitLab