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 852ee8aa2..8a0cc4e2c 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 @@ -3578,4 +3578,21 @@ public class FileUtil { public static void tail(File file, Charset charset) { FileUtil.tail(file, charset, Tailer.CONSOLE_HANDLER); } + + /** + * 获取class类当前文件夹, 不管是否在jar包中都会返回文件夹的路径 + * class在jar包中返回jar所在文件夹,class不在jar中返回文件夹目录 + * jdk中的类不能使用此方法 + */ + public static String getClassDir(Class clazz) { + String currentDir = null; + File file = new File(clazz.getProtectionDomain().getCodeSource().getLocation().getPath()); + if (file.isFile()) { + currentDir = file.getParentFile().getAbsolutePath(); + } else { + currentDir = file.getAbsolutePath(); + } + return currentDir; + } + } diff --git a/hutool-core/src/test/java/cn/hutool/core/io/file/TailerTest.java b/hutool-core/src/test/java/cn/hutool/core/io/file/TailerTest.java index 50263d484..0ca3c1a25 100644 --- a/hutool-core/src/test/java/cn/hutool/core/io/file/TailerTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/io/file/TailerTest.java @@ -1,23 +1,31 @@ package cn.hutool.core.io.file; -import org.junit.Ignore; -import org.junit.Test; - import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; +import lombok.Data; +import org.junit.Ignore; +import org.junit.Test; public class TailerTest { - + @Test @Ignore public void tailTest() { FileUtil.tail(FileUtil.file("e:/tail.txt"), CharsetUtil.CHARSET_GBK); } - + @Test @Ignore public void tailWithLinesTest() { Tailer tailer = new Tailer(FileUtil.file("f:/test/test.log"), Tailer.CONSOLE_HANDLER, 2); tailer.start(); } + + @Test + @Ignore + public void testDir() { + System.out.println(FileUtil.getClassDir(FileUtil.class)); + System.out.println(FileUtil.getClassDir(Data.class)); + System.out.println(FileUtil.getClassDir(Test.class)); + } }