gpt4 book ai didi

Java 说 FileNotFoundException 但文件存在

转载 作者:太空宇宙 更新时间:2023-11-04 09:55:50 24 4
gpt4 key购买 nike

我的计算机科学类(class)有一项作业,其中要求读取包含多个测试分数的文件,并要求我对它们进行求和并求平均值。虽然求和和求平均值很容易,但我在读取文件时遇到问题。老师说用这个语法

Scanner scores = new Scanner(new File("scores.dat"));

但是,这会引发 FileNotFoundException,但我一遍又一遍地检查当前文件夹中是否存在该文件,之后,我认为它必须对权限执行某些操作。我更改了每个人的读写权限,但仍然不起作用,并且仍然不断抛出错误。有谁知道为什么会发生这种情况?

编辑:它实际上指向一个目录,但是,我已经解决了这个问题。现在 file.exists() 返回 true,但是当我尝试将其放入 Scanner 时,它会抛出 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);
}
}

最佳答案

在许多情况下,可能会在运行时抛出 FileNotFoundException

  1. 指定的文件不存在。这可能有多种原因,包括:

    • 路径名完全错误
    • 路径名看起来正确,但实际上是错误的,因为它包含您没有注意到的非打印字符(或同形文字)
    • 路径名是相对路径,相对于正在运行的应用程序的实际当前目录,它无法正确解析。发生这种情况通常是因为应用程序的当前目录不是您期望或假设的目录。
    • 文件路径已损坏;例如路径的目录名不正确,路径上的符号链接(symbolic link)已损坏,或者路径组件之一存在权限问题。
  2. 指定的文件实际上是一个目录。

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

好消息是,问题将不可避免是上述问题之一。这只是一个确定哪个的问题。您可以尝试以下一些操作:

  • 调用file.exists()将告诉您是否存在具有给定名称/路径名的任何文件系统对象。

  • 调用file.isDirectory()将测试它是否是一个目录。

  • 调用file.canRead()将测试它是否是可读文件。

  • 这一行将告诉您当前目录是什么:

      System.out.println(new File(".").getAbsolutePath());
  • 此行将以某种方式打印出路径名,以便更容易发现意外的前导或尾随空格等内容:

      System.out.println("The path is '" + path + "'");

    在输出中查找意外的空格、换行符等。

<小时/>

事实证明,您的示例代码存在编译错误。

我运行了您的代码,没有处理来自 Netbeans 的投诉,只是收到以下异常消息:

Exception in thread "main" java.lang.RuntimeException: Uncompilablesource code - unreported exception java.io.FileNotFoundException; mustbe caught or declared to be thrown

如果您将代码更改为以下内容,它将解决问题。

public static void main(String[] args) throws FileNotFoundException {    
File file = new File("scores.dat");
System.out.println(file.exists());
Scanner scan = new Scanner(file);
}

解释:Scanner(File) 构造函数被声明为抛出 FileNotFoundException 异常。 (扫描仪可能无法打开文件。)现在 FileNotFoundException 是一个已检查异常。这意味着可能抛出异常的方法必须捕获异常或在 throws 子句中声明它。上述修复采用后一种方法。

关于Java 说 FileNotFoundException 但文件存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54172828/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com