【问题标题】:java.io.FileNotFoundException - file DOES exist in directoryjava.io.FileNotFoundException - 文件确实存在于目录中
【发布时间】:2015-01-09 19:44:22
【问题描述】:

我在尝试读取文件时不断收到相同的错误。该文件确实存在于目录中,我做错了什么?

package test;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class MenuSample{

    public static void main(String[] args) {

        File f = new File("C:/Users/Joe/Documents/workspace/ArtificialLifeFX/res/latest.txt");

        Scanner scanner = null;
        try {
            scanner = new Scanner(f);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        scanner.useDelimiter("\r\n");
    }
}

我收到以下错误:

java.io.FileNotFoundException: C:\Users\Joe\Documents\workspace\ArtificialLifeFX\res\latest.txt (The system cannot find the file specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.util.Scanner.<init>(Unknown Source)
    at test.MenuSample.main(MenuSample.java:16)
Exception in thread "main" java.lang.NullPointerException
    at test.MenuSample.main(MenuSample.java:21)

如果我太天真了,请原谅我,我是 Java 新手。我在 Windows 7 上运行 Eclipse Luna。

【问题讨论】:

  • 一些想法...Java 对文件名区分大小写,而 Windows 则不区分大小写,因此请确保大小写匹配。
  • 另外,字符串中的分隔符是正斜杠,windows 是反斜杠。我不确定 Java 是否足够聪明来解决这个问题。
  • 在创建扫描仪之前检查 f.exists() 和 f.canRead() 的值不会有什么坏处。
  • 您确定该文件在 Java 程序运行之前已经存在吗?或者您是否希望 Java 代码在文件不存在时自动创建文件(因为这不会发生)?您必须使用 File#createNewFile()。
  • 您应该设置资源管理器以显示文件扩展名。 This is how you do that.

标签: java file filenotfoundexception fileinputstream


【解决方案1】:

相信 JVM 会告诉你这样的事情。坚持你是正确的毫无意义;你不能赢得那个论点。你需要弄清楚你做错了什么。

我的建议?试试这个:

    File f = new File("C:\\Users\\Joe\\Documents\\workspace\\ArtificialLifeFX\\res\\latest.txt");

在我的 Windows 7 机器上是:

    File f = new File("C:\\Users\\Joe\\My Documents\\workspace\\ArtificialLifeFX\\res\\latest.txt");

检查您的路径以确保它绝对正确。

【讨论】:

  • 使用这些路径仍然没有运气。在调试代码并在 Windows 资源管理器中打开存储在变量“f”中的路径时,会正确加载 .txt 文件,所以我不确定为什么 Eclipse 没有找到它...
  • /代替`\\`没问题。
  • 您是否尝试过将 res 和 latest 之间的最后一个 / 替换为 \\ 的 duffymo 路径?
  • 是的,同样的错误 java.io.FileNotFoundException: C:\Users\Joe\My Documents\workspace\ArtificialLifeFX\res​​\latest.txt(系统找不到指定的文件)
  • 键入“windows + r”,然后粘贴“记事本 C:\Users\Joe\My Documents\workspace\ArtificialLifeFX\res​​\latest.txt”,然后按 Enter。这会打开文件吗?您确定该文件在 Java 程序运行之前存在吗?还是您希望 Java 代码在文件不存在时自动创建文件?
【解决方案2】:

文件可能存在但 eclipse 没有看到它。尝试在项目资源管理器中刷新项目并确保该文件出现在项目资源管理器下。由于您引用的文件位于工作区文件夹下,因此它应该出现在项目资源管理器中。

【讨论】:

    猜你喜欢
    • 2018-08-12
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多