properties跟序列化存储数据的差异

Properties

1.Properties类是什么?

Properties类表示一组持久的属性。 Properties可以保存到流中或从流中加载。 属性列表中的每个键及其对应的值都是一个字符串。 值得一提的是Properties并没有泛性表现形式,它的key和value都是字符串形式。

2.Properties的构造方法

构造器描述
Properties()创建一个没有默认值的空属性列表。
Properties​(int initialCapacity)创建一个没有默认值的空属性列表,并且初始大小容纳指定数量的元素,而无需动态调整大小。
Properties​(Properties defaults)创建具有指定默认值的空属性列表。

3.Properties常用方法

1.getProperty​(String key)
在此属性列表中搜索具有指定键的属性。
返回值类型:String
2.getProperty​(String key, String defaultValue)
在此属性列表中搜索具有指定键的属性。
返回值类型:String
3.setProperty​(String key, String value)
调用 Hashtable方法 put ,集合的存储。
返回值类型:Object
4.store​(OutputStream out, String comments
将此 Properties表中的此属性列表(键和元素对)以适合使用 load(InputStream)方法加载到 Properties表的格式写入输出流。
返回指类型:void
5.store​(Writer writer, String comments)
将此 Properties表中的此属性列表(键和元素对)以适合使用 load(Reader)方法的格式写入输出字符流。
返回值类型:void
6.load​(InputStream inStream)
从输入字节流中读取属性列表(键和元素对)。
返回值类型:void
7.load​(Reader reader)
以简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。
返回值类型:void

4.store方法

该方法一次只能存储一个数据,无论是用setProperties()方法还是put()方法,存储多个数据的时候就只能存储最后一个数据到指定的文件。
在这里插入图片描述

序列化技术

1.概念

将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。

2、编程要求:

只有实现Serializable接口的类对象才可以被序列化。 Serializable接口没有定义任何成员,它只用来说明某个类可以被序列化

3.序列化

writeObject(Object o)序列化存储任意类型的数据,比如对象或是集合存储的数据。

  Book book = new Book("1","茶",12);
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d://book.txt"));
        oos.writeObject(book);
        oos.close();

4.反序列化

通过readObject来从文件中读取相关的数据,该数据可以是任意类型的数据,比如集合数据和对象存储的数据。

//反序列化
        ObjectInputStream ois = new ObjectInputStream((new FileInputStream("d://book.txt")));
        Object o = ois.readObject();
        System.out.println(o);
        ois.close();

5.序列化中文乱码问题

因为序列化和反序列化都是基于二进制流的,也就是说,在第二步中,其实就是将person的相关信息转化为二进制存储在了book.txt这个文件中,那么用文本编辑器打开查看的话当然是会出现乱码的。只有通过反序列化才能将存储的二进制读取出来,然后正常显示在控制台上。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值