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这个文件中,那么用文本编辑器打开查看的话当然是会出现乱码的。只有通过反序列化才能将存储的二进制读取出来,然后正常显示在控制台上。