转换流+序列化流+打印流

十七、转换流

OutputStreamWriter extends Writer
OutputStreamWriter:是字符流通向字节流的桥梁,可使用指定的 charset 将要写入流中的字符编码成字节。

InputStreamReader extends Reader
InputStreamReader :是字节流通向字符流的桥梁,他使用指定的 charset 读取字节并将其解码为字符。

十八、序列化流
把对象以流的方式,写入到文件中保存,叫写对象,也叫对象的序列化
对象中包含的不仅仅是字符,使用字节流
ObjectOutputStream:对象的序列化流

ObjectOutputStream extends OutputStream
特有的成员方法
void writeObject(Object obj) 将指定的对象写入ObjectOutputStream

序列化和反序列化的时候,会抛出 NotSerializableException 没有序列化异常
类通过实现 Serializable 接口以启用其序列化功能,未实现此接口的类无法使其任何状态序列化或反序列化
Serializable 接口也叫标记型接口
要进行序列化和反序列化的类必须实现 Serializable 接口,就会给雷添加一个标记
当我们进行序列化和反序列话的时候,就会检测类上是否有这个标记

把文件中保存的对象,以流的方式读取出来,叫读对象,也叫对象的反序列化
读取的文件保存的都是字节,使用字节流
ObjectInputStream:对象的反序列化流

特有的成员方法
void readObject(Object obj) 从ObjectInputStream 读取对象
readObject 方法声明抛出了 ClassNotFoundException (Class 文件找不到异常)

反序列化的前提:
1.类必须实现 Serializable 接口
2.必须存在类对应的class文件

static 关键字:静态关键字
静态优先于非静态加载到内存中(静态优先于对象进入到内存中)
被 static 修饰的成员变量不能再序列化,序列化的都是对象

transient 关键字:瞬态关键字
被 transient 修饰成员变量,不能被序列化

十九、打印流
PrintStream:打印流
PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式

PrintStream 特点:
1.只负责数据的输出,不负责数据的读取
2.与其他输出流不同,PrintStream 永远不会抛出 IOException
3.有特有的方法:print , println

注意:
如果使用继承自父类的 write 方法写数据,那么查看数据的时候会查询编码表
如果使用自己特有的方法print / println 方法写数据,写的数据原样输出

可以改变输出语句的目的地(打印流的流向)
输出语句,默认在控制台输出
使用 System.setOut 方法改变输出语句的目的地,改为参数中传递的打印流目的地

static void setOut(PrintStream out)
重新分配“标准”输出流

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值