1. 流 : 就类似于水流。作用就是用来向目的地发送数据和接收数据。
理解的时候可以把流看作一个管道,这个管道一头连接在应用程序上,另一头目前是在文件上。(以后可能是另一台电脑) 。 管道中流动的就是字节。
2. 流的分类:
根据流的方向来分:(站在程序的角度)
输入流: 就是数据从文件流向应用程序的。
输出流: 就是数据从应用程序流向文件。
从文件读数据必须创建输入流,向文件写数据必须创建输出流。
根据流的单位来分:
字节流: 管道中流动的是字节。
字符流: 管道中流动的是字符。
根据流的功能来分:
节点流: 是指管道直接捅在文件上。
处理流: 是管道没有链接在文件上,而是包裹在节点流上,目的是为了加强节点流的功能。
3. 四个基础抽象流:
字节输入流: InputStream
字节输出流: OutputStream
字符输入流: Reader
字符输出流: Writer
4. 文件流: 操作文件
FileInputStream : 文件输入字节流
FileOutputStream: 文件输出字节流
FileReader : 文件输入字符流
FileWriter : 文件输出字符流
5. 缓冲流:文件流的效率太低。缓冲流用来解决效率的问题。
BufferedReader : 缓冲输入字符流
BufferedWriter: 缓冲输出字符流
6. 转换流: 目的是将字节流转换为字符流。(不能字符串转换为字节流)
InputStreamReader(字节流对象): 输入字节字符转换流
OutputStreamWriter(字节流对象) : 输出字节字符转换流
7. 打印流:
PrintWriter: 打印字符流
8. 对象流: 作用就是操作自定义对象。
ObjectOutputStream: 对象输出字节流
ObjectInputStream : 对象输入字节流
序列化: 把对象写入到文件中的过程就称为序列化。
问题? 当一台电脑将一张图片(刘德华)发送到另一台电脑的时候,发送的过程是通过网线中字节的方式
发送到另一台电脑,换句话说,另一台电脑接收到的数据是一堆二进制的字节。另一台电脑要负责将这一堆二进制的字节数据还原为一张刘德华的图片。现在问题就来了,如何还原?
序列化就是用来指导电脑还原的一种机制。序列化就是在发送数据之前对一些数据做一些记号,还原的时候根据这些记号进行还原,这样刘德华的二进制数据就可以正常还原为刘德华的图片了。