IO流下一节

IO流(2)

处理流Object(Int)OutputStream

序列化和反序列化

  1. 序列化就是在保存数据时,保存数据的值和数据类型

  2. 反序列化就是在恢复数据时,恢复数据的值和数据类型

    必须是包含数据类型的
    
  3. 需要让某个对象支持序列化机制,则必须让其类是可序列化的,为了让某个类是可序列化的,该类必须实现如下两个接口之一:

    1. Serializable //这是一个标记接口
    2. Externalizable
    //需要实现接口
    class Dog imoplements Serializable{}(推荐使用)
    class Dog imoplements Externalizable{}
    
    两者之一
        
        //Serializable是标记接口的,属于声明性质就是没有任何方法
    
    //序列化数据到e:\\data.dat(dat文件是专门保存数据类型的)
    ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(Filepath))
        
    oos.writeInt(100);//int->Integer(实现了Serializable)
    oos.writeBoolean(true);//boolean->Boolean(实现了Serializable)
    oos.writeChar('a');//char->Character(实现了Serializable)
    oos.writeDouble(9.5);//double->Double(实现了Serializable)
    # 写入字符串
    oos.writeUTF("韩顺平教育")//String(实现了Serializable)
    oos.writeObject(new Dog("旺财"10))
    

    如果需要实例化某个类的对象,必须实现Serializable

读取(反序列化)的顺序需要和保存的数据(序列化)顺序一致,当读取对象时,需要在读取的类中先定义

注意事项和细节说明

  1. 读写顺序要一致

  2. 要求序列化或反序列化对象,需要实现Serializable

  3. 序列化的类中建议添加SerialVersionUID,为了提高版本的兼容性

    //serialVersionUID序列化的版本号,可以提高兼容性
    	##它的好处:当类中新添了一个属性,就不会认为是一个全新的,只是会认为一个升级版
    private static fianl long serialVersionUID=1L
    
  4. 序列化对象时,默认将里面所有属性都进行序列化,但除了static或transient修饰的成员

  5. 序列化对象时,要求里面属性的类型也需要实现序列化接口

  6. 序列化具备可继承性,也就是如果某类已经实现了序列化,则它的所有子类也已经默认实现了序列化

标准输入输出流

类型默认设备
System.in标准输入InputStream键盘
System.out标准输出PrintStream显示器

转换流

InputStreamReader和OutputStreamWriter

将字节流转换为字符流

介绍

  1. InputStreamReader:Reader的子类,可以将InputStream(字节流)包装成Reader(字符流)
  2. OutputStreamWriter:Writer的子类。实现将OutputStream(字节流)包装成Writer(字符流)
  3. 当处理纯文本数据时,如果使用字符流效率更高,并且可以有效解决中文问题,所以建议将字节流转换成字符流
  4. 可以在使用知道编码格式(utf-8,gbk,gb2312等)
InputStreamReader(InputStream,Charset)可以传入一个InputStream对象,而且可以指定处理的编码(charset)

打印流

类别
PrintStream字节流只有输出流
PrintWriter字符流

properties

基本介绍

  1. 专门用于读写配置文件的集合类

    配置文件的格式:

    键=值

    键=值

  2. 注意:键值对不需要有空格,值不需要引号抱起来,默认类型是String

  3. 常用方法

    ​ load:加载配置文件的键值对到properties对象

    ​ list:将数据显示到指定设备

    ​ getproperty(key):根据键获取值

    ​ getproperty(key,value):设置键值对到properties对象

    ​ store:将properties中的键值对存储在配置文件,在idea中,保存信息到配置文件,如果含有中文,会存储为unicode码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萝卜头888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值