【问题标题】:File not found?文件未找到?
【发布时间】:2010-12-02 21:20:44
【问题描述】:

我有一个任务,我们有几个类,其中一个是一个文件读取器类,它有一个读取文件的方法,它被一个包含文件路径的参数(字符串)调用,现在我有一个几个 .txt 文件,它们与 .java 文件在同一个文件夹中,所以我认为我可以将 file.txt 作为文件路径传递(相对于 php 而言),但这总是返回一个找不到文件的异常!

看到给定的类应该可以正常工作,并且我验证了这些类确实与 .java 文件位于同一文件夹 workspace/src 中,我必须对文件路径字符串做错了什么,但是什么?

这是我的代码:

private static final String fileF = "File.txt";
private static final ArrayList<String[]> instructionsF =
CreatureReader.readInstructions(fileF);

【问题讨论】:

  • 这不可能是您的所有代码,因为它不是有效的 Java 类。请使用能够重现您的问题的最少可执行代码更新问题。您至少应该包含 Java 文件 IO 调用。
  • 这与 .java 文件的位置无关,当前工作目录是您运行可执行文件的位置。
  • 听听法尔马里! file.txt 应该在你调用 java Main 的目录中

标签: java file-io


【解决方案1】:

把这个:

File here = new File(".");
System.out.println(here.getAbsolutePath());

在您的代码中的某处。它会打印出你程序的当前目录。

然后,只需将文件放在那里,或更改文件路径。

【讨论】:

  • 实际上 java 将主文件夹作为“当前文件夹”(感谢你的小测试发现)所以我只需要做 src/...(类文件还在另一个目录中)
  • 这取决于您运行 Java 程序的方式。无论如何,此测试显示当前工作目录
  • 所以,它可能是 Eclipse 或其他从项目文件夹运行程序的编辑器。 Falmarri 解释了原因。
【解决方案2】:

有两点需要注意:

  1. 检查“File.txt”是否真的是这样命名的,因为它找不到“file.txt” -> 区分大小写很重要!
  2. 如果您使用相对文件名(没有整个目录)并且它不在您的类路径中,则找不到您的文件 -> 尝试将其放在生成 .class 文件的位置

所以:如果你有一个名为 /home/javatest/File.txt 的文件,你的源代码在 /home/javatest/ 和你的 .class 文件在同一个目录中,你的代码应该可以正常工作。

【讨论】:

    【解决方案3】:

    如果您的类在包中并且您已将文件作为同级文件放置,那么您的路径必须包含包路径。正如其他答案中所建议的,打印出工作目录的路径以确定 Java 在哪里查找相对文件。

    【讨论】:

      猜你喜欢
      • 2017-08-21
      • 1970-01-01
      • 2021-09-17
      • 2022-01-06
      • 2016-09-22
      • 2019-05-06
      • 2023-04-01
      • 2014-04-17
      • 2019-11-28
      相关资源
      最近更新 更多