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获取当前路径的主要内容,如果未能解决你的问题,请参考以下文章