Java.io.FileNotFoundException - 文件在目录中存在

3
我在尝试读取文件时一直收到相同的错误。该文件在目录中确实存在,我做错了什么?
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");
    }
}

I get the following error:

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。


1
几个想法...Java对文件名大小写敏感,而Windows则不是,因此请确保大小写匹配。 - Jeremy
1
在创建扫描器之前,检查f.exists()和f.canRead()的值是一个好习惯。 - JimW
在shell中尝试使用notepad "C:/Users/Joe/Documents/workspace/ArtificialLifeFX/res/latest.txt"。这样能打开你的文件吗? - Tom
1
你确定在Java程序运行之前文件已经存在吗?还是你期望Java代码自动创建文件(因为这不会发生)?你需要使用File# createNewFile()。 - nhylated
1
你应该设置资源管理器以显示文件扩展名。这是如何操作的 - Tom
显示剩余11条评论
2个回答

3

相信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找不到它... - Joe Morgan
1
使用 / 而不是 \\\ 没有问题。 - Tom
是的,同样的错误 java.io.FileNotFoundException: C:\Users\Joe\My Documents\workspace\ArtificialLifeFX\res\latest.txt(系统找不到指定的文件) - Joe Morgan
1
输入“windows + r”,然后粘贴“notepad C:\Users\Joe\My Documents\workspace\ArtificialLifeFX\res\latest.txt”,按回车键。这样能打开文件吗?你确定在Java程序运行之前该文件存在吗?还是你期望Java代码在文件不存在时自动创建该文件? - nhylated
@nhylated 你来晚了 :P。我已经问过他了,他说他也遇到了一个错误,因为文件找不到(请参见问题下面的评论)。因此,这个文件确实丢失了。 - Tom
显示剩余2条评论

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接