为了账号安全,请及时绑定邮箱和手机立即绑定

Java new File()表示FileNotFoundException,但文件存在

Java new File()表示FileNotFoundException,但文件存在

qq_遁去的一_1 2019-07-27 11:00:04
Java new File()表示FileNotFoundException,但文件存在我有一个CS课程的作业,它说要读取一个包含多个考试成绩的文件,并要求我对它们进行求和。虽然求和和平均很容易,但我在阅读文件方面遇到了问题。讲师说要使用这种语法Scanner scores=new Scanner(new File("scores.dat"));但是,这会抛出一个FileNotFoundException,但是我一遍又一遍地查看当前文件夹中是否存在该文件,之后,我认为它必须对权限做一些事情。我为每个人更改了读写权限,但它仍然无法正常工作,但仍然会抛出错误。有谁知道为什么会这样?编辑:它实际上是指向一个目录,但是,我已经解决了这个问题。file.exists()返回true,但是,当我尝试将它放入扫描程序时,它会抛出filenotfoundexception这是我的所有代码import java.util.Scanner;import java.io.*;public class readInt{         public static void main(String args[]){                 File file=new File("lines.txt");                 System.out.println(file.exists());                 Scanner scan=new Scanner(file);         }}
查看完整描述

3 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

有三种情况FileNotFoundException可能会被抛出。

  1. 指定的文件不存在。

  2. 命名文件实际上是一个目录。

  3. 由于某种原因,无法打开指定的文件进行读取。

根据您的描述,前两种情况不太可能。我会用第三种情况来测试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);}


查看完整回答
反对 回复 2019-07-27
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

代码本身工作正常。问题是,程序工作路径指向的是其他地方,而不是您的想法。

使用此行并查看路径的位置:

System.out.println(new File(".").getAbsoluteFile());


查看完整回答
反对 回复 2019-07-27
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

显然有很多可能的原因,以前的答案很好地记录了它们,但这是我在一个特定情况下解决这个问题的方法:

我的一个学生遇到了这个问题,我几乎把我的头发弄出来试图找出来。原来,该文件不存在,即使它看起来像它。问题是Windows 7配置为“隐藏已知文件类型的文件扩展名”。这意味着如果文件看起来具有名称“data.txt”,则其实际文件名为“data.txt.txt”。

希望这可以帮助别人省去一些头发。


查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 3547 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号