前言
复习IO流发现的一个写的很好的博客:
1.1 IO流分类
IO流主要的分类方式有以下3种:
- 按数据流的方向:输入流、输出流
- 按处理数据单位:字节流、字符流
- 按照功能:节点流、处理流
1.1.1 输入流与输出流
顾名思义按照文件以流的形式进出到内存就是输入流,输出到硬盘就是输出流。
1.1.2 字节流与字符流
区别在于操作的数据单元不同,字节流操作时是byte,字符流操作的就是char。
因为字节流操作文档类中具有中文字符的容易出现乱码的原因所以:
字节流一般用来处理图像、视频、音频、PPT、Word等类型的文件。
字符流一般用于处理纯文本类型的文件,
字节流可以处理一切文件,而字符流只能处理纯文本文件。
1.1.3 字节流与字符流
节点流:直接操作数据读写的流类,比如FileInputStream
处理流:对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能,例如BufferedInputStream(缓冲字节流)
处理流和节点流应用了Java的装饰设计模式。
下图就很形象地描绘了节点流和处理流,处理流是对节点流的封装,最终的数据处理还是由节点流完成的