Java:为什么我的代码读取和保存的是文件路径,而不是文件的实际内容?

Java: Why is my code reading and saving the file path and not the actual contents of the file?

提问人:Liferafter 提问时间:11/18/2021 更新时间:11/18/2021 访问量:253

问:

我一直在研究这种方法来打开文件并将其内容读入 ArrayList。出于某种原因,它将文件路径存储在 ArrayList 中,而不是文件内容中!

text = new MyArrayList<>();
try (Scanner s = new Scanner(new File(fileName).getAbsolutePath())) {
  while (s.hasNext()) {
    text.add(s.next());
  }
}

你能帮我弄清楚我在哪里犯了错误吗,谢谢!

P.S. MyArrayList 是我自己的 ArrayList 实现,它用作 ArrayList。

数组列表 java.util.scanner

评论

0赞 Robert Harvey 11/18/2021
尝试执行,看看会发生什么。System.out.println(new File(fileName).getAbsolutePath());
7赞 camickr 11/18/2021
您正在创建具有 String 值的 Scanner 对象。该方法返回一个 String,因此它是扫描程序读取的对象。去掉该语句,只需将 传递给 .getAbsolutePath()FileScanner
1赞 markspace 11/18/2021
我认为因为您调用对象并返回一个字符串,而不是 .只需使用对象即可。getAbsolutePathFileFileFile
1赞 Robert Harvey 11/18/2021
请注意,它有一个构造函数重载,它接受 .docs.oracle.com/javase/7/docs/api/java/util/......这是在代码中调用的构造函数。ScannerString
0赞 Liferafter 11/18/2021
我想这样做,以便即使它不在目录中,也可以使用该方法访问该文件,并且由于某种原因,如果没有它,我只会得到一个filenotfound异常

答:

0赞 Dave Sessional 11/18/2021 #1

当我们在 java 中处理文件时,我们必须非常具体地说明我们正在谈论的文件。

整个文件结构中可能有多个同名文件,java 如何决定需要考虑哪个文件。我们有以下两种选择

  1. 使用绝对路径 - 第一个选项是提供 Java 程序的绝对路径,以便它可以简单地使用该路径创建对象。

  2. 使用相对路径 - 当我们使用相对路径时,java 只搜索类路径中的文件,默认情况下,类路径是当前工作目录,即您的项目根文件夹。

如果要使用相对路径,请确保它位于类路径中。

Reference Image

否则,请确保提供程序的绝对路径。

给程序提供任何文件名并期望 java 找出绝对文件路径是不对的。

毋庸置疑,您的扫描仪对象必须正确。