基本类型的序列化 writeInt() readInt()
照片的序列化 ImageIO.read() ImageIO.write()
1 字符串的序列化 编码问题
println()
readLine()
2 对象的序列化
readObject()
writeObject()
常见文本文件读取方式
对象的序列化
流的总结
广义上: 数据转换为byte 序列 都是序列化
int long 可以序列化 -> 拆分
String 可以序列化 --> 编码
Image 可以序列化(.png) -> 图片的压缩格式
对象(属性)可以序列化 对象编码为 byte 序列
7 什么是对象的序列化: 将Object转换为byte序列,就是序列化,反之叫反序列化
为什么要序列化: 为了在byte流中存储对象
如何序列化: 使用writeObject(Object)/readObject()
1) 序列化流, 是过滤流
ObjectOutputStream writeObject(Object) 序列化对象
ObjectInputStream readObject() 对象的反序列化
2) 序列化接口: 对象必须实现"序列化接口"才能进行 "序列化"
否则出现不能序列化的异常!
3) JavaBean 规范, 必须实现Serializable接口
Java API中的类大多是Java Bean, 基本都实现了Serializable
序列化的应用:
8 浅层复制与深层复制
1) Java的默认复制规则是浅层复制, 性能好, 隔离性差
浅层复制现象, 只复制第一层对象
2) 利用序列化实现深层复制
.Java IO 总结
1)是一种数据操作模型: 把任何数据都作为Byte的有序集合看待
逐一处理的方式方式叫做流.
Java 流模型, 是byte by byte 是数据集合
data : 41 42 00 00 ff ff d6 d0
index : 0 1 2 3 4 5 6 7 8
pointer: ^
RandomAccessFile 只能操作文件, 只能处理基本类型
节点流: 流开始和结束的地方
过滤器: 基本流的功能扩展
字节流: 每次处理一个byte
字符流: 每次出来一个char
ObjectInputStream in = new ObjectInputStream(new CipherInputStream(new FileInputStream(file)));
Object obj = in.readObject();
CipherInputStream in = new CipherInputStream(new FileInputStream(file));
img = ImageIO.read(in);
装饰器模式: 流的API是按照装饰器模式设计的
InputStream 最基本的输入流操作模型, 是抽象类(read()是没有实现的)
|-- FileInputStream 实现了在文件上读取的方法 read(), 节点流
|-- ByteArrayInputStream 实现了在数组里读取的方法 read()
|-- FilterInputStream 过滤流,包装在一个基本流外部,提供功能扩展
| |-- DataInputStream 为基本流扩展了基本数据类型读取
| | readInt() readDouble()...方法的底层是read()
| |-- BufferedInputStream 为基本流提供缓冲处理
| |-- CipherInputStream 解密输入流, 知道就行
| |-- ZipInputStream 解压输入流, 知道就行
|-- ObjectInputStream 对象输入流, 也是过滤器
OutputStream 最基本的输出流操作模型,是抽象类(write()是没有实现的)
|-- FileOutputStream 实现了在文件上写出的方法 write(), 节点流
|-- ByteArrayOutputStream 在变长数组上实现了write() 方法
|-- FilterOutputStream
| |-- DataOutputStream 基本类型输出
| |
| |-- BufferedOutputStream 缓冲输出
| |-- CipherOutputStream 加密输出
| |-- ZipOutputStream 压缩输出
|-- ObjectOutputStream 对象输出流
字符流, 每次处理一个字符
Reader 抽象类, 定义了抽象方法read(), 每次读取一个字符
|-- InputStreamReader 也是过滤器, 将byte序列解码为char序列
| 底层也是依赖基本的byte输入流
|-- BufferedReader (Scanner) 是字符流过滤器,
| 有常用的文本读取方法readLine()
|-- FileReader 底层是 FileInputSream + InputStreamReader
| 不能指定读取文件的字符编码
全国职称计算机考试速成过关系列套装:W .. 定价:¥133 优惠价:¥133.0 更多书籍 | |
全国职称计算机考试速成过关系列套装:W .. 定价:¥124 优惠价:¥124.0 更多书籍 |