使用Java的相对路径打开文本文件(在Eclipse中)

使用Java的相对路径打开文本文件(在Eclipse中),java,eclipse,relative-path,Java,Eclipse,Relative Path,我尝试使用相对路径打开一个文件,文件位于项目的根文件夹中 BufferedReader reader = new BufferedReader(new FileReader("text.h")); 那没用 所以我打印了工作目录,但这将引导我找到安装eclipse的目录 System.out.println(new File(".").getAbsolutePath()); 我的项目结构: Project --bin --core text.

我尝试使用相对路径打开一个文件,文件位于项目的根文件夹中

BufferedReader reader = new BufferedReader(new FileReader("text.h"));
那没用

所以我打印了工作目录,但这将引导我找到安装eclipse的目录

 System.out.println(new File(".").getAbsolutePath());
我的项目结构:

Project
       --bin
       --core
           text.h
           --src
              text.h 
              --com
                 --home
                     --core
                         Main.java
                         text.h
       --editor
       --ui
       text.h
我在我的项目目录中的不同位置复制了文本文件,并尝试了不同的路径,但都没有成功

如果我将该文件复制到安装Eclipse的目录中,那么我可以使用以下路径读取该文件

BufferedReader reader = new BufferedReader(new FileReader("text.h"));
如何从项目的根文件夹读取文件

String workingDir = System.getProperty("user.dir");


BufferedReader reader = new BufferedReader(new FileReader(workingDir+"\text.h"));
workingDir的值给出当前工作目录的路径

试试这个,它可能对你有帮助

URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
System.out.println("URL " + url.toExternalForm());

URL file:/D:/workspace/myproject/bin/
或者当jar单击时:

URL file:jar:/D:/workspace/myproject/bin/myproject.jar!/....

使用“/”可以访问根文件夹。显示您的项目结构。System.getProperty(“user.dir”)可以显示您当前的工作目录。如果该路径低于您的工作目录,那么您可能需要附加一些../。。如果您不想使用绝对路径,您可以在Eclipse工作区中添加一个系统变量作为值。然后,将项目的根文件夹添加到变量中。如果需要查找特定的abs路径,它不会降低程序的可移植性。@omu_negru System.getProperty(“user.dir”);和System.out.println(新文件(“.”.getAbsolutePath());打印相同的路径。workingDir将引导我找到安装eclipse的目录。我不需要对对象调用getClass()函数吗?我尝试了URL URL=Main.class.getClass().getProtectionDomain().getCodeSource().getLocation(),但是我得到了一个NullPointerException。
MainClass.class.getProtectionDomain()…
当然了。;)否则
Class.Class