IO
IO流:
流:一连串流动的数据,先入先出的方式流动,管道
作用:传输数据,读入写出,上传下载
流的分类:
按照流向分:都是以程序为中心
输入流:从数据源到目的地
输出流:从目的地到数据源
按照操作数据单元分:
字节流(万能流)**重点:能够传输任意类型的数据
读写以程序为中心
InputStream 抽象父类 字节输入流
FileInputStream 文件字节输入流,从文件中读入数据到程序
构造器:
方法:
读取-->read(); 返回值int,读到的是一个字节数据,没有数据返回-1;
read(byte[]);一个字节数组读入,返回读入数组的数据个数
关闭-->close();
OutputStream 抽象父类 字节输出流
FileOutputStream: 文件字节输出流,
构造器:
方法:
写-->write();
刷出-->flush();
关闭-->close();
写出时,文件不存在,系统会创建一个如果目录不存在,则不会创建
字符流:传输纯文本数据
只能拷贝纯文本的数据
输入流:
Reader:抽象父类
FileReader:实现类
方法:
read()
close()
输出流:
Writer:抽象父类
Writer:实现类
方法:
write()
flush()
close()
按照功能分:
节点流:用来传输数据,数据从数据源到目的地
功能流:扩展节点流的功能,增强性能
使用:
功能流(节点流)
对象流Object(是一个功能流):读写对象|任意类型的数据 保留数据+数据类型
ObjectInputStream 对象|反序列化输入流
方法:readXxx()
ObjectOutputStream 对象|序列化字节输出流
实现 Serializable接口
方法:writeXxx()
注意:不能发生多态
先序列化后反序列化
读写的内容顺序要保持一致
不是所有的属性需要序列化 transient,属性值为默认值
静态的内容不会被序列化
序列化:把对象数据转为可存储或者可传输的过程,称为序列化