Java:尝试使用BufferedReader读取在同一项目的不同包中导入的文本文件?没有得到这样的文件或目录错误?&l



我正试图从一个文本文件中提取数据,这是在我的项目,但在不同的包下。这是项目的布局:项目布局

当我使用路径时,它返回一个错误,但当我通过location调用它时,它可以正常工作。我用的是Eclipse

我得到的错误信息是:error

package park.FILEMOD;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileModifier {
public static void main(String[] args) throws IOException{

FileReader in = new FileReader("/park_mp1/src/park/DATA/Data1.txt");
BufferedReader br = new BufferedReader(in);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
in.close();
}

}

简单方法:

——在Eclipse中,我必须将这行改为:

FileReader in = new FileReader("src/park/DATA/Data1.txt");

为什么会这样?因为IDE可以接受从根目录开始的全路径,例如">/Users/xyz/abc/park_mp1/DATA/Data1.txt">为了程序员的使用方便,相对路径。每个IDE都可以定义如何使您的生活更轻松。一些IDE也可以接受您编写的内容。他们所做的是在后面,他们只是用完整的路径替换它。

哪里不工作?转到终端,并使用终端进行操作。执行javac FileModifier.java,然后执行java FileModifier,使用与Eclipse相同的行:

FileReader in = new FileReader("src/park/DATA/Data1.txt");

现在,这不起作用,与之前得到的错误相同。所以,最后,FileReader只需要Data1.txt文件(在使用终端时,您将使用FileReader in = new FileReader("../DATA/Data1.txt");,并且您只需要为它提供到达那里的路径)。现在对于eclipse,它说像">src ->公园→…"终端要求像">..→数据→…,

为什么?因为Terminal知道"…/"意思是查一个目录。Eclipse可以实现同样的事情,它只是没有,由于一些需要进一步研究的原因。

最新更新