用Java读取文件(使用IDE)
我试图编写一段Java代码来读取文件中的每一行并将其添加到Arraylist中。这是我的密码:用Java读取文件(使用IDE),java,java-io,Java,Java Io,我试图编写一段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
// 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
类来自
如何找到该文件?它位于软件包文件夹中
“names.txt”正在引用项目根目录。因此,您必须在源文件夹中搜索,如“src/your.package/names.txt”。在访问文件时,您依赖于当前的工作目录。工作目录取决于您如何启动应用程序。在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) {
// ...
}
如果您在静态
上下文中调用此函数,请将getClass()
替换为YourClassName。class
其中YourClassName
是此代码所在的类的名称
另见:
运行方式
选项卡之一中进行修改,并且无论您的类在哪里,它都是${PROJECT}/bin或${PROJECT}/classes。所以你必须把你的文件放在那里,但是请注意,如果你按“全部清除”或其他什么,它可能会被删除,所以请使用副本
为什么不使用java.util.Scanner而不是有趣的TextFileIn呢
Scanner scanner = new Scanner ("names.txt");
while (scanner.hasNextLine ())
String line = scanner.nextLine ();
您是否尝试过使用“names.txt”的完整路径?如果这是一个可接受的解决方法,它应该可以做到。我在java ranch牛道上做练习,问题是我需要使用TextFileIn,以防您好奇:)。我知道JavaRanch,但链接到该教程就可以了。Scanner不是镇上最小的孩子——在以前的时代(1.4),处理文件有点麻烦:Wrapper-around-Wrapper-
r=new-BufferedFileReader(new-InputStreamReader(new-LineInputStream)(new-File(name‘‘)’)代码>或类似的东西。所以很多老师制作了一个更容易使用的课堂,现在他们的材料传播开来,没有更新到新的Scanner.class,它是JDK/JRE的一部分。也许牧场应该更新他们的网页?