Java中的I/O输入输出流概述

       流是一组有序的数据序列,根据操作类型,可以分为输入流和输出流两种,Java语言中定义的负责各种输入输出的类都被放在java.io包中。其中所有的输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;而所有的输出流都是抽象类OutStream(字节输出流)或抽象类Writer(字符输出流)的子类。

一. 输入流

      1. InputStream类是字节输入流的抽象类,是所有字节输入流的父类,其层次结构为:

      

                                                                                                                      图1 InputStream类的层次结构

      该类中所有方法遇到错误都会引发IOException异常,简要说明部分方法:

  • read()方法:从输入流中读取数据的下一个字节。返回0~255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回-1.
  • read(byte[] b):从输入流中读入一定长度的字节,并以整数的形式返回字节数。
  • mark(int readlimit)方法:在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数。
  • reset()方法:将输入指针返回到当前所做的标记处。
  • skip(long n)方法:跳过输入流上的n个字节并返回实际跳过的字节数。
  • markSupported()方法:如果当前流支持mark()/reset()操作就返回True。
  • close()方法:关闭此输入流并释放与该流关联的所有系统资源。

      2. Reader类是字符输入流的抽象类,所有的字符输入流都是它的子类,其层次结构为:

                                                                   

                                                                                                                      图2 Reader类的层次结构

        Reader类中方法与InputStream类中的方法类似。

二. 输出流

     1. OutputStream类是字节输出流的抽象类,此抽象类是表示输出字节流的所有类的超类,其层次结构为:

                                                                        

                                                                                                                      图3 OutputStream类的层次结构

      OutputStream类中的所有方法均返回void,在遇到错误时引发IOException异常,简单说明部分方法:

  • write(int b)方法:将指定的字节写入此输出流。
  • write(byte[] b)方法:将b个字节从指定的byte数组写入此输出流。
  • write(byte[] b, int off, int len)方法:将指定byte数组中从偏移量off开始的len个字节写入此输出流。
  • flush()方法:彻底完成输出并清空缓存区。
  • close()方法:关闭输出流。

       2. Write类是字符输出流的抽象类,所有的字符输出类都是它的子类,其层次结构为:

                                                               

                                                                                                         图4 Writer类的层次结构

 在学习过程中做做笔记。

猜你喜欢

转载自www.cnblogs.com/Shonve-xy/p/11236174.html