提交 a54335aa 编写于 作者: 勤为径苦作舟's avatar 勤为径苦作舟

fix: FileUtils.getClassRootPath 重命名为 getResourcePath,返回“file:/”开头的路径时不截取

上级 53c853e0
# 不兼容变更
* 1.9.4:
* `FileUtils.getClassRootPath`重命名为`getResourcePath`
* 1.8.1:
* `date.DateFeature`中静态变量的赋值方式由直接赋值改为通过`set``setAlways`方法赋值;
* `DateUtils.defaultLocalDatePattern`移至`DateConstant.DEFAULT_LOCAL_DATE_PATTERN`
......
......@@ -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();
}
......
......@@ -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]);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册