Java 类I/O异常

Java 类I/O异常,java,exception,io,ioexception,Java,Exception,Io,Ioexception,我正在为OCP考试学习这些课程I/O: OutputStream子类: 文件输出流 缓冲输出流 数据输出流 PrintStream(我看到它的方法write()不抛出异常) 编写器子类: 文件编写器 缓冲写入程序 PrintWriter(我看到它的方法write()不抛出异常) 读卡器子类: 文件阅读器 缓冲读取器 InputStream子类: 缓冲输入流 过滤流 ObjectInputStream 我的问题: 对于读写(具有不同签名)的主要方法,这些类中的每个类何时抛出IO

我正在为OCP考试学习这些课程I/O:

  • OutputStream子类:

    • 文件输出流
    • 缓冲输出流
    • 数据输出流
    • PrintStream(我看到它的方法write()不抛出异常)
  • 编写器子类:

    • 文件编写器
    • 缓冲写入程序
    • PrintWriter(我看到它的方法write()不抛出异常)
  • 读卡器子类:

    • 文件阅读器
    • 缓冲读取器
  • InputStream子类:

    • 缓冲输入流
    • 过滤流
    • ObjectInputStream
我的问题: 对于读写(具有不同签名)的主要方法,这些类中的每个类何时抛出IOException?在javadoc中,只有一个短语:

IOException-如果发生I/O错误

没有对案件的解释

我知道(我不知道这些是否正确):

  • 如果文件不存在,FileOutputStream将抛出java.io.FileNotFoundException。实际上,这个类不创建文件

  • 如果文件不存在,FileWriter将抛出java.io.FileNotFoundException。这个类实际上不创建文件

  • 如果文件不存在,BufferedReader抛出java.nio.file.NoSuchFileException(IOException的子类)

  • 如果文件不存在,FileInputStream将抛出java.io.FileNotFoundException

非常感谢


A.

如果您搜索该类的API文档,通常Javadocs会解释在什么情况下抛出什么异常,例如 文件编写器


这些类中的任何一个在执行过程中遇到问题时都会引发I/O异常。如果出现以下情况,文件输出流可能引发异常:

  • 文件不存在
  • 文件是只读的
  • 操作系统拒绝访问该文件
  • 您正在写入的驱动器没有足够的空间
输入流通常在以下情况下引发异常:

  • 流未正确初始化
  • 输入类型未匹配
  • 如果正在读取的文件在读取时发生更改
  • 如果文件不存在

创建FileWriter/OutputStream会创建文件。这是故意含糊的:任何IO问题都会导致抛出IOException。例如,如果文件在读/写时被删除。或者如果硬盘驱动器损坏。或者如果没有空间可供写入,或者操作系统以某种方式拒绝读取或写入(因为网络驱动器上存在网络错误,或者因为存在权限问题)。这可能是很多事情。如果你想要特定的异常类,只需在谷歌上搜索“什么异常将由___________;何时___;引发”