缓冲流,序列化

缓冲流
也叫高效流,对基本流进行增强
字节缓冲流:BufferedInputStream,BufferedOutputStream
字符缓冲流:BufferedReader,BufferedWriter
原理:创建对象时,创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高效率

字节缓冲流构造方法:
public BufferedInputStream(InputStream in)
public BufferedOutputStream(OutputStream Out)
字节缓冲输出流:
在这里插入图片描述
字节缓冲输入流:
在这里插入图片描述

字符缓冲流构造方法:
public BufferedReader(Reader in):创建一个新的缓冲输入流
public BufferedWriter(Writer in):创建一个新的缓冲输出流
字符缓冲输出流
在这里插入图片描述
字符缓冲输入流
在这里插入图片描述
字符编码Character Encoding
自然语言的字符与二进制之间的对应规则

按照某种规则,将字符储存在计算机中,称为编码
反之,将计算机中的二进制数按某种规则解析显示出来,称为解码
如果存储和解析的规则不同,会导致乱码

字符集:也叫编码表,是一个系统所支持的所有字符的合集
常见有ASCII字符集,ISO-8859-1字符集,GBxxx字符集,Unicode字符集UTF-8最为常见

转换流
java.io.InputStreamReader,是Reader的子类,它读取字节,并使用指定的字符集将其解码为字符。他的字符集可以由名称指定,也可以接受平台的默认字符集
构造方法:
InputStreamReader(InputStream in):创建一个使用默认字符集的字符流
InputStreamReader(InputStream in,String charsetName):创建一个指定字符集的字符流

OutputStreamWriter
在这里插入图片描述
InputStreamReader
在这里插入图片描述

序列化和反序列化
序列化:将一个对象的数据,类型和对象中存储的属性通过字节序列写出到文件中进行持久保存的方式叫序列化
反序列化:将字节序列从文件中读取出来,重构对象叫反序列化
ObjectOutputStream:对象的序列化流
ObjectIutputStream:对象的反序列化流
在这里插入图片描述
在这里插入图片描述
static关键字:静态优先于非静态加载到内存中,被static修饰的成员变量不能被序列化,序列化的都是对象
transient关键字:被transient修饰的成员变量不能被序列化

序列化冲突异常的原理和解决方案:
当JVM反序列化对象时,没有找到class文件的类,会抛出ClassNotFoundException异常
当JVM反序列化对象时,能找到class文件,但是class文件在反序列化时发生了修改,抛出InvalidClassException异常:
该类的序列版本号与从流中读取的类描述的版本号不同;
该类包含未知数据;
该类没有可访问的无参数构造。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值