我正在使用Mac,我是新手。这是我的问题:
在 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");
我无法加载文件夹。因此,从此文件到该文件夹的相对路径似乎不起作用。那我该怎么办?我做错了什么?
我需要使用相对路径,因为这段代码将从服务器运行,我不知道绝对路径将是什么。
最有可能的是,您在相对路径上犯了错误。它应该有效。
为了检查这一点,您可以使用 new File('testDir').mkdirs()
创建新的测试目录,并查看 - Java 将在哪里创建此目录。它会在预期的地方还是其他地方?
您可以使用 firefoxProfileFolder.getCanonicalPath() 并检查它是否与 字符串 s = new File("/Users/prime/work/dmall/selenium/src/test/resources/firefoxprofile").getCanonicalPath();
如果路径不同,则您的相对路径为假...
您可以在运行时获取目录:
URL url = ClassLoader.getSystemResource("relative to/classpath/resources/firefoxprofile");
File file = new File(url.getFile()); // the directory
....
考虑到启动脚本的当前目录,您实际上需要使用目录路径。 即您的根目录是此脚本的目录。