繁体   English   中英

用Java读取文件(使用IDE)

[英]Reading file in Java (IDE used)

我试图编写一段Java代码来读取文件中的每一行并将其添加到Arraylist中。 这是我的代码:

// try catch block removed for clarity.
file = new TextFileIn("names.txt");
String line = null;
while ((line = file.readLine()) != null) {
    list.add(line);
}

names.txt与我的代码位于同一软件包文件夹中。 我使用的IDE是Eclipse。 但是,当我运行代码时,我得到了FileNotFoundException TextFileIn类来自http://www.javaranch.com/doc/com/javaranch/common/TextFileIn.html

我怎样才能找到该文件?

访问文件时,您依赖于当前的工作目录。 工作目录取决于您启动应用程序的方式。 在Eclipse中,通常是项目的根文件夹。 在命令行中,它是当前打开的目录。 您无法从Java代码内部进行控制,因此,对于应该作为应用程序一部分的文件,这被认为是不明智的做法。

该文件显然与运行的代码位于同一软件包中,因此它已经在类路径中,然后您可以(并且应该)直接从类路径中获取它。

InputStream input = getClass().getResourceAsStream("names.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(input, "UTF-8"));
String line = null;

while ((line = reader.readLine()) != null) {
    // ...
}

如果在static上下文中调用此方法,则将getClass()替换为YourClassName.class ,其中YourClassName是此代码所在的类的名称。

也可以看看:

它位于包文件夹中。
“ names.txt”引用项目根目录。 因此,您必须在源文件夹中进行搜索,例如“ src / your.package / names.txt”。

您应该了解如何从命令行编译和运行程序,以及以后如何更改IDE的设置以进行相同的操作。 从IDE到IDE,从eclipse到netbeans,再到IntelliJ ...,您都可以随身携带基本知识。

即使您是通过单击或从IDE在桌面上运行,也实际上是坐在OS的文件夹中。 在eclipse中,默认情况下,运行代码时,它是您的classes-dir目录,但是可以在run as选项卡之一中对其进行修改,并且无论您走到哪里,它都是$ {PROJECT} / bin或$ {PROJECT} / classes。 因此,您必须将文件放在此处,但要注意-如果您按“全部清除”或其他操作,则该文件可能会被删除,因此请使用副本。

为什么不使用java.util.Scanner代替有趣的TextFileIn?

Scanner scanner = new Scanner ("names.txt");
while (scanner.hasNextLine ())
    String line = scanner.nextLine ();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM