IO流体系
四个基类
字节类型:InputStream
、OutputStream
字符类型:``Reader、
Writer`
常用API
完整API体系
序列化时,还学习到了ByteArrayOutputStream流
ByteArrayOutputStream 对byte类型数据进行写入的类 相当于一个中间缓冲层,将类写入到文件等其他outputStream。它是对字节进行操作,属于内存操作流
IO设计模式
装饰器模式
IO操作时很消耗性能的,缓冲流将数据加载至缓冲区,一次性读取/写入多个字节,从而避免频繁的IO操作,提高流的传输效率
字节缓冲流(BufferedInputStream
、BufferedOutputStream
)和字符缓冲流(BufferedReader
、BufferedWriter
)都采用的是**==装饰器模式==**,来增强各自基类的子类对象的功能
字节类型:
BufferedInputStream
增强的是FileInputStream
BufferedOutputStream
增强的是FileOutputStream
原理就是内部维护了一个字节数组作为缓冲区
字符类型:
BufferedReader
增强的是FileReader
BufferedWriter
增强的是FileWriter
原理就是内部维护了一个字符数组作为缓冲区
适配器模式
适配器模式用于接口互不兼容的类的协调工作,如下图(仅列出InpuptStreamReader
)所示。
转换流的两个类的设计就是两个适配器模式()
转换流解释:
其中
InputStreamReader
是字节流转换为字符流的桥梁,其子类FileReader
是基于该基础上的封装,可以直接操作字符文件。其中
OutputStreamWriter
是字符流转换为字节流的桥梁,其子类FileWriter
是基于该基础上的封装,可以直接将字符写入到文件。