序列化反序列化以及字符流

一、对象流

  • 对象流:ObjectOutputStream/ObjectInputStream

    • 增强了缓冲区功能

    • 增强了读写8种基本数据类型和字符串功能

    • 增强了读写对象的功能

      • readObject() 从流中读取一个对象(反序列化)

      • writeObject(Object obj) 向流中写入一个对象(序列化)

  • 使用流传输对象的过程称为序列化、反序列化

  • 注意事项

    • 要求:序列化类必须要实现Serializable接口

    • 序列化类中对象属性要求实现Serializable接口

    • 序列化版本号ID,保证序列化的类和反序列化的类是同一个类

    • 使用transient(瞬间的)修饰属性,这个属性不能被序列化

    • 静态属性不能序列化

    • 序列化多个对象,可以借助集合来实现


二、字符编码

  • IS0-8859-1 收录除ASCII外,还包括西欧、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号

    • UTF-8 针对Unicode码表的可变长度字符编码

    • GB2312 简体中文

    • GBK 简体中文、扩充

    • BIG5 台湾,繁体中文

  • 注意:当编码方式和解码方式不一致时,会出现乱码


三、字符流的父类

  • 字符流的父类(抽象类):

    • Reader:字符输入流

      • public int read(){}

      • public int read(char[] c){}

      • public int read(char[] b,int off,int len){}

    • Writer:字符输出流

      • public void write(int n){}

      • public void write(String str){}

      • public void write(char[] c){}


四、文件字符流

  • FileReader:

    • public int read(char[] c); //从流中读取多个字符,将读到内容存入c数组,返回实际读到的字符数;如果达到文件的尾部,则返回-1

  • FileWriter:

    • public void write(String str); //一次写多个字符,将b数组中所有字符,写入输出流

  • 注意:使用FileReader和FileWriter只能复制文本文件,不能复制图片或者二进制文件;使用字节流可以复制任何文件


五、字符缓冲流

  • 缓冲流:BufferedReader/BufferedWriter

    • 高效读写

    • 支持输入换行符

    • 可一次写一行、读一行(读取结束条件为传入的string 为null)即:readLine() 和newLine()


六、打印流

  • PrintWriter:

    • 封装了print() /println() 方法,支持写入后换行

    • 支持数据原样打印

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值