Java 中的 FileNotFoundException

2025 年 5 月 12 日 | 阅读 4 分钟

FileNotFoundExceptionjava.io 包中另一个可用的异常类。当我们尝试访问系统中不存在的文件时,就会发生此异常。它是一个已检查的异常,因为它发生在运行时,而不是编译时,并且由以下构造函数之一抛出:

  1. RandomAccessFile
  2. FileInputStream
  3. FileOutputStream
FileNotFoundException in Java

FileNotFoundException 构造函数

FileNotFoundException 类具有以下两个构造函数:

1. FileNotFoundException()

它构造一个 FileNotFoundException 并将错误详细消息设置为 null,因为我们没有将任何参数传递给构造函数。

语法

FileNotFoundException 的语法如下:

2. FileNotFoundException(String str)

它构造一个 FileNotFoundException 并将我们传递给构造函数的错误详细消息 str 设置为该消息。

语法

FileNotFoundException 的语法如下:

FileNotFoundException 方法

由于它是 java.lang.Throwablejava.lang.Object 类的子类,因此它提供了这两个类提供的所有方法。

java.lang.Throwable 类的方法

addSuppressed(), fillInStackTrace(), getCause(), getLocalizedMessage(), getMessage(), getStackTrace(), getSuppressed(), initCause(), printStackTrace(), printStackTrace(), printStackTrace(), setStackTrace(), 和 toString().

java.lang.Object 类的方法

clone(), equals(), finalize(), getClass(), hashCode(), notify(), notifyAll(), 和 wait().

要了解这些方法的更多信息,请访问以下链接:

object-class

post/java-throwable

为什么会发生 FileNotFoundException?

导致此错误的主要有两个原因。出现此异常的原因如下:

  1. 当我们尝试访问系统中不存在的文件时。
  2. 当我们尝试访问不可访问的文件时,例如,如果文件仅用于只读操作,而我们尝试修改它,则可能会引发错误。

让我们看一些例子,逐一理解以上两点:

FileNotFoundExample1.java

输出

FileNotFoundException in Java

FileNotFoundExample2.java

输出

FileNotFoundException in Java

处理 FileNotFoundException

为了处理异常,需要使用 try-catch 块。在 try 块中,我们将可能引发异常的代码行放在其中。每当发生异常时,catch 块都会对其进行处理。还有其他一些方法可以用来移除 FileNotFountException,如下所示:

  1. 如果我们收到错误消息“no such file or directory”(没有这样的文件或目录),我们可以通过重新验证代码并检查给定的文件是否在给定的目录中来移除此异常。
  2. 如果我们收到错误消息“access is denied”(拒绝访问),我们必须检查文件的权限是否符合我们的要求。如果权限不符合我们的要求,我们必须修改文件的权限。
  3. 对于“access is denied”(拒绝访问)错误消息,我们还必须检查该文件是否正在被另一个程序使用。
  4. 如果我们收到错误消息“the specified file is a directory”(指定的不是文件而是目录),我们必须删除它或更改文件名。

因此,在 FileNotFoundExceptionExample1 类中,我们将 FileReader 代码放在 try-catch 块中,并确保给定的文件名在目录中可用。

FileNotFoundExample1.java

输出

FileNotFoundException in Java