3 回答

TA贡献1829条经验 获得超4个赞
有三种情况FileNotFoundException
可能会被抛出。
指定的文件不存在。
命名文件实际上是一个目录。
由于某种原因,无法打开指定的文件进行读取。
根据您的描述,前两种情况不太可能。我会用第三种情况来测试file.canRead()
。
如果上面的测试返回true,我会怀疑以下内容:
您可能忘记明确抛出或捕获潜在的异常(即FileNotFoundExcetion
)。如果您在IDE中工作,您应该得到编译器的一些投诉。但我怀疑你没有在这样的IDE中运行你的代码。
我只是在不处理Netbeans投诉的情况下运行您的代码,只是为了得到以下异常消息:
线程“main”中的异常java.lang.RuntimeException:无法编译的源代码 - 未报告的异常java.io.FileNotFoundException; 必须被抓住或宣布被抛出
尝试以下代码,看看异常是否会消失:
public static void main(String[] args) throws FileNotFoundException { File file=new File("scores.dat"); System.out.println(file.exists()); Scanner scan=new Scanner(file);}

TA贡献1895条经验 获得超3个赞
代码本身工作正常。问题是,程序工作路径指向的是其他地方,而不是您的想法。
使用此行并查看路径的位置:
System.out.println(new File(".").getAbsoluteFile());

TA贡献1827条经验 获得超8个赞
显然有很多可能的原因,以前的答案很好地记录了它们,但这是我在一个特定情况下解决这个问题的方法:
我的一个学生遇到了这个问题,我几乎把我的头发弄出来试图找出来。原来,该文件不存在,即使它看起来像它。问题是Windows 7配置为“隐藏已知文件类型的文件扩展名”。这意味着如果文件看起来具有名称“data.txt”,则其实际文件名为“data.txt.txt”。
希望这可以帮助别人省去一些头发。
添加回答
举报