猿问

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

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);
        }}


qq_遁去的一_1
浏览 3548回答 3
3回答

浮云间

有三种情况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);}

蛊毒传说

代码本身工作正常。问题是,程序工作路径指向的是其他地方,而不是您的想法。使用此行并查看路径的位置:System.out.println(new File(".").getAbsoluteFile());

斯蒂芬大帝

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

相关分类

Java
我要回答