【问题标题】:File not found error even when my file is there即使我的文件在那里,也找不到文件错误
【发布时间】:2014-06-07 03:59:16
【问题描述】:

我正在阅读课堂作业中的文件。但是,当我编译它时,fileNotFound 错误。 (没有这样的文件或目录)显示。我不明白为什么它在那里,因为我的文件与我的程序在同一个文件夹中。我也尝试将扩展名更改为 .dat,但错误仍然显示。这是我的代码:

try {
    BufferedReader reader = new BufferedReader(new FileReader("measurements.txt"));
    String line = null;

    while ((line = reader.readLine()) != null) {
        .... // continues      
    }
}
catch (FileNotFoundException e) {
    System.out.println("Error!\nFile not found.");
    System.out.println(e);
}
catch(Exception e) {
    System.out.println("Error ");
}

【问题讨论】:

  • 你应该用你正在使用的语言来标记它。
  • 检查您当前的目录...它可能不是您认为的... System.getProperty("user.dir")
  • 似乎使用 Java 语言。要消除此错误,请尝试使用文件的绝对路径而不是考虑相对路径。我的意思是:FileReader("/home/user/measurements.txt")...
  • 检查对那个文件的 RW 访问,发生在我身上一次。
  • 我怀疑你在编译时遇到了 FileNotFoundException...

标签: java exception bufferedreader filenotfoundexception


【解决方案1】:

您需要在下一行中提供文件的绝对路径。文件阅读器需要绝对路径才能读取文件。

 BufferedReader reader = new BufferedReader(new FileReader("measurements.txt"));

但是,还有其他一些替代方法可以从相对路径读取文件,例如,如果您在 src/classes 文件夹中创建了文件,那么您可以按如下方式读取文件。

 BufferedReader reader = new BufferedReader(
    new InputStreamReader(
        Level.class.getClassLoader().getResourceAsStream("measurements.txt")
    )
);

【讨论】:

    【解决方案2】:

    尝试在 windows C:/somefolder/measurements.txt 或 linux /home/user/measurements.txt 中给出绝对路径

    BufferedReader reader = new BufferedReader(new FileReader("/home/user/measurements.txt"));
    

    它会起作用的......

    当您提供相对路径时,它应该可以工作,但我怀疑您是从与您正在阅读的 java 文件和文件不同的目录运行程序。

    【讨论】:

      【解决方案3】:

      这是因为该文件没有读取权限。转到文件属性并授予读/写权限 并确保提供文件的绝对路径

      【讨论】:

        【解决方案4】:

        您不需要写完整路径或至少是相对路径,而不仅仅是文件名吗?

        【讨论】:

        • 不是答案 - 更适合作为评论
        猜你喜欢
        • 2016-05-18
        • 1970-01-01
        • 2016-01-08
        • 1970-01-01
        • 1970-01-01
        • 2022-07-12
        • 2014-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多