JDK所提供的所有流类位于java.io包中,都分别继承自以下四种抽象流类:
InputStream:继承自InputStream的流都是用于向程序中输入数据的,且数据单位都是字节(8位)。
OutputSteam:继承自OutputStream的流都是程序用于向外输出数据的,且数据单位都是字节(8位)。
Reader:继承自Reader的流都是用于向程序中输入数据的,且数据单位都是字符(16位)。
Writer:继承自Writer的流都是程序用于向外输出数据的,且数据单位都是字符(16位)
按流向分:
输入流: 从文件中读取数据到程序
输出流: 从程序向文件中写入数据
按数据传输单位分:
字节流: 以字节为单位传输数据的流
字符流: 以字符为单位传输数据的流,在不同编码中,一个字符等于不同的字节数(ASCII码:一个中文汉字占两个字节。UTF-8编码中一个中文(含繁体)等于三个字节。)
序列化与反序列化
将对象通过流的方式进行读写操作
内存----(数据:对象)-----磁盘 out 输出流 这个过程叫序列化
磁盘-----(数据)-----内存 in 输入流 这个过程叫反序列化