我正在使用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路径是什么。
答案 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
....