I / O类的例外

时间:2019-03-24 11:11:10

标签: java exception io ioexception

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

  • OutputStream子类:

    • FileOutputStream
    • BufferedOutputStream
    • DataOutputStream
    • PrintStream(我看到它的方法write()不会抛出异常)
  • 作家子类:

    • FileWriter
    • BufferedWriter
    • PrintWriter(我看到它的方法write()不会抛出异常)
  • 阅读器子类:

    • FileReader
    • BufferedReader
  • InputStream子类:

    • BufferedInputStream
    • FilterInputStream
    • 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。

2 个答案:

答案 0 :(得分:1)

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

https://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html

答案 1 :(得分:1)

这些类中的任何一个在执行过程中遇到问题时,都会引发I / O异常。如果:

,文件输出流可能会引发异常。
  • 文件不存在
  • 文件是只读的
  • 操作系统拒绝访问该文件
  • 您要写入的驱动器没有足够的空间

如果以下情况,输入流通常会引发异常:

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