文件夹的Java相对路径,不使用File

时间:2013-01-28 07:57:30

标签: java macos file relative-path absolute-path

我正在使用Mac而且我是新手。这是我的问题:

我需要一个文件夹作为File对象包含在Java中。当我尝试这个时:

File firefoxProfileFolder = new File("/Users/prime/work/dmall/selenium/src/test/resources/firefoxprofile");

工作正常。此代码位于文件中:/Users/prime/work/dmall/selenium/src/test/java/com/dmall/utils/WebUtil.java

但是当我尝试这个时:

File firefoxProfileFolder = new File("../../../../resources/firefoxprofile");

我无法加载文件夹。所以从这个文件到该文件夹​​的相对路径似乎不起作用。所以我该怎么做?我做错了什么?

我需要使用相对路径,因为这段代码将从服务器运行,我不知道absoulte路径是什么。

4 个答案:

答案 0 :(得分:2)

最有可能的是,你在相对路径上犯了一个错误。它应该工作。

为了检查这一点,您可以使用new File('testDir').mkdirs()创建新的测试目录,并查看 - Java将在何处创建此目录。它会在预期的地方还是在其他地方?

答案 1 :(得分:2)

您可以使用firefoxProfileFolder.getCanonicalPath()并检查它是否与路径相同     String s = new File(“/ Users / prime / work / dmall / selenium / src / test / resources / firefoxprofile”)。getCanonicalPath();
如果路径不同,则相对路径为false ...

答案 2 :(得分:1)

考虑到启动程序脚本的当前目录,您实际上需要使用目录路径。即你的根目录是这个脚本的目录。

答案 3 :(得分:1)

您可以在运行时获取目录:

URL url = ClassLoader.getSystemResource("relative to/classpath/resources/firefoxprofile");
File file = new File(url.getFile()); // the directory
....