我的 CS 课有一个作业,上面写着要读取一个包含多个考试成绩的文件,并要求我对它们求和并取平均值。虽然求和和求平均值很容易,但我在读取文件时遇到了问题。讲师说要使用这种语法
Scanner scores = new Scanner(new File("scores.dat"));
但是,这会抛出一个 FileNotFoundException
,但我一遍又一遍地检查该文件是否存在于当前文件夹中,之后,我认为它必须对权限做一些事情。我给大家改了读写权限,还是不行,还是一直报错。有谁知道为什么会发生这种情况?
编辑:它实际上指向一个目录,但是,我已经解决了这个问题。 Now file.exists()
returns true
, but when I try to put it in the Scanner
, it throws the 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);
}
}
原文由 scrblnrd3 发布,翻译遵循 CC BY-SA 4.0 许可协议
在许多情况下,可能会在运行时抛出
FileNotFoundException
。指定的文件不存在。这可能有多种原因,包括:
命名文件实际上是一个目录。
由于某种原因无法打开指定文件进行读取。
好消息是,问题将 不可避免地 成为上述问题之一。这只是解决哪个问题。您可以尝试以下操作:
调用
file.exists()
将告诉您是否存在具有给定名称/路径名的任何文件系统对象。调用
file.isDirectory()
将测试它是否是一个目录。调用
file.canRead()
将测试它是否是一个可读文件。这一行会告诉你当前目录是什么:
在输出中查找意外的空格、换行符等。
事实证明,您的示例代码存在编译错误。
我在没有处理 Netbeans 的投诉的情况下运行了您的代码,只是为了得到以下异常消息:
如果您将代码更改为以下内容,它将解决 该 问题。
_解释_:
Scanner(File)
构造函数被声明为抛出FileNotFoundException
异常。 (碰巧扫描仪无法打开文件。)现在FileNotFoundException
是一个已 _检查的异常_。这意味着 可能 抛出异常的方法 必须 捕获异常或在throws
子句中声明它。上述修复采用后一种方法。