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

文件夹的Java相对路径,不使用文件,java,macos,file,relative-path,absolute-path,Java,Macos,File,Relative Path,Absolute Path,我用的是Mac电脑,我对它还不熟悉。我的问题是: 我需要在Java中包含一个文件夹作为文件对象。当我尝试这个: File firefoxProfileFolder = new File("/Users/prime/work/dmall/selenium/src/test/resources/firefoxprofile"); File firefoxProfileFolder = new File("../../../../resources/firefoxprofile"); 它很好用。此

我用的是Mac电脑,我对它还不熟悉。我的问题是:

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

File firefoxProfileFolder = new File("/Users/prime/work/dmall/selenium/src/test/resources/firefoxprofile");
File firefoxProfileFolder = new File("../../../../resources/firefoxprofile");
它很好用。此代码位于文件:/Users/prime/work/dmall/selenium/src/test/java/com/dmall/utils/WebUtil.java中

但当我尝试这个:

File firefoxProfileFolder = new File("/Users/prime/work/dmall/selenium/src/test/resources/firefoxprofile");
File firefoxProfileFolder = new File("../../../../resources/firefoxprofile");
我无法加载该文件夹。因此,从该文件到该文件夹的相对路径似乎不起作用。那我该怎么办?我做错了什么


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

最有可能的是,您在相对路径中犯了错误。它应该会起作用


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

很可能是您在相对路径中犯了错误。它应该会起作用


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

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

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

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

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

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

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

您可以使用firefoxProfileFolder.getCanonicalPath并检查其路径是否与 字符串s=new File/Users/prime/work/dmall/selenium/src/test/resources/firefoxprofile.getCanonicalPath;
如果路径不同,则相对路径为false…

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

表示.java文件将被编译为.class并从其他地方运行。请发布目录结构的大致图。@Singularity那么我该怎么办?您不能仅根据java源文件的包层次结构来获取资源,不过,您可以通过类加载器在运行时获取资源。请看:@GavinXiong,但这不是一个属性文件,而是一个文件夹?该.java文件将被编译成一个.class并从其他地方运行。请发布一个目录结构的粗略图。@Singularity,那么我该怎么办?您不能仅仅根据java源文件的包层次结构来获取资源,不过,您可以通过类加载器在运行时获取资源。看到这个:@GavinXiong,但这不是一个属性文件,而是一个文件夹?嗨,我猜相对路径是正确的,但它不是这样工作的。不要猜测,你应该用上面提到的方法检查一下。嗨,我猜相对路径是正确的,但它不是这样工作的。不要猜测,你应该检查这个使用提到的方法,以确保。我不需要一个txt文件,我需要的文件夹本身。谢谢。这是清楚的。我真的应该使用相对于/classpath/resources的字符串吗。。。作为方法的参数?它不起作用。@KorayTugay不,这只是一个示例,取决于您的包结构。值得注意的是,如果您使用的是maven,src/test/resources文件夹在运行时不会按常规打包,您应该将资源放入src/main/resources中。我不需要txt文件,我需要文件夹本身。谢谢。这是清楚的。我真的应该使用相对于/classpath/resources的字符串吗。。。作为方法的参数?它不起作用。@KorayTugay不,这只是一个示例,取决于您的包结构。值得注意的是,如果您使用的是maven,src/test/resources文件夹将不会在运行时按常规打包,您应该将资源放入src/main/resources中。