Java获取当前路径

Posted

技术标签:

【中文标题】Java获取当前路径【英文标题】:Java getting current paths 【发布时间】:2013-05-06 19:23:29 【问题描述】:

我在尝试找出路径问题的最佳解决方案时遇到了一点问题。我正在运行一个 java 测试,我想得到两件事。

    项目的绝对位置 当前正在运行的类文件的绝对位置

我想在操作系统版本上正确使用 / 或 \,以便文件夹结构保持不变。我目前正在使用它,但它并不是我想要的

final String parentDir = System.getProperty("user.dir");
final String path = "src/test/java/" + method.getDeclaringClass()
    .getCanonicalName().replaceAll("\\.", "/") + ".java";

任何帮助将不胜感激。谢谢

更新:我正在尝试获取预编译代码的 url,因为我需要访问代码中的 cmets。这可能会改变你的一些人的答案

更新 2:好的,我让它工作了。

final String path = new File(getClass().getResource("/").getFile())
            .getParent().split("target")[0] + "src/test/java/" + method
            .getDeclaringClass().getCanonicalName()
            .replaceAll("\\.", "/") + ".java";

谢谢大家

【问题讨论】:

您可以查看此链接获取本地分隔符。 ***.com/questions/8075373/… 对当前代码的小改进:使用replace('.', '/') 而不是replaceAll("\\.", "/") 以避免正则表达式引擎。 获取项目的绝对位置尝试在控制台打印以下内容: System.out.println(new File(".").getAbsolutePath()); mike,试过了,这就是我得到的 /Users/john/work/development/automation/product/。 【参考方案1】:

鉴于您是从 MyClass 调用它,您应该调用 File directory = (new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath())).getParentFile();

我曾经有过同样的问题。除了 Jatin 的回答之外,我还必须添加一个 toURI() 以在所有平台(Windows 等)上获取正确的路径并发布 1.5 JVM。

【讨论】:

试过你的命令,我得到了以下 /Users/john/work/development/automation/product/store/target Christian,可以说它的工作原理并不能真正解决我的问题。明天上班的时候我会在windows机器上试试【参考方案2】:

如果说你是从 jar 文件运行的:

new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getParent()+"/"

返回包含 jar 文件的文件夹。

删除上面的.getParent() 以获得确切的class 文件的路径

【讨论】:

试过你的命令,我得到了以下 /Users/john/work/development/automation/product/store/target/ 不是你的类的路径吗?对于项目文件夹new File("."); 也可以。

以上是关于Java获取当前路径的主要内容,如果未能解决你的问题,请参考以下文章

java 获取当前文件的路径,路径全名

通过java获取当前项目路径

如何获得当前Java文件的路径

在java中怎么获取页面的路径

Java获取当前路径(Linux+Windows)

java 获取路径