[英]java application not reading properties file without setting the working folder in 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.