流的分类:
1. 输入流和输出流
- 输入流:只能从中读取数据。
- 输出流:只能向其中写入数据(数据从内存到硬盘,通常称为输出流)。
2. 字节流和字符流
- 字节流操作的数据单元是8位字节(主要以InputStream和OutputStream作为基类)。
- 字符流操作的数据单元是16位字符(主要以Reander和Writer作为基类)。
3. 节点流和处理流
节点流(低级流):可以从/向一个特定的IO设备(磁盘,网络)读/写的流。
处理流:用于对一个已经存在的流进行连接或封装,通过封装后的流来实现数据的读/写功能(使用处理流的好处是只要使用相同的流,程序就可以采用完全相同的输入/输出代码来访问不同的数据源,随着处理流所包装节点流的变化,程序实际所访问的数据源也相应的变化,是一种典型的装饰器设计模式)。
流的概念模型:
- InputString/Reader:所有的输入流的基类,前者是字节输入流,后者是字符输入流。
- OutputStream/Writter:所有输出流的基类,前者是字节输出流,后者是字符输出流。
1. 处理流的功能:
- 性能的提高:主要以增加缓冲的方式来提高输入/输出的效率。
- 操作便捷:处理流提供一系列便捷的方法来一次输入/输出大批量的内容。
Java程序无需理会输入/输出节点是磁盘,网络还是其他的输入输出设备,程序只要将这些节点流包装成处理流,就可以使用相同德尔输入输出代码来读写不同的输入输出设备数据