1

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

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

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");

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

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

4

4 回答 4

3

您很可能在相对路径中犯了错误。它应该工作。

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

于 2013-01-28T08:02:56.623 回答
3

您可以使用 firefoxProfileFolder.getCanonicalPath() 并检查它是否与 String s = new File("/Users/prime/work/dmall/selenium/src/test/resources/firefoxprofile").getCanonicalPath(); 的路径相同
如果它不是相同的路径,那么您的相对路径是错误的......

于 2013-01-28T08:22:54.713 回答
2

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

于 2013-01-28T08:04:12.520 回答
2

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

URL url = ClassLoader.getSystemResource("relative to/classpath/resources/firefoxprofile");
File file = new File(url.getFile()); // the directory
....    
于 2013-01-28T08:10:14.200 回答