美文网首页java随笔
properties-----序列化

properties-----序列化

作者: 71150ce14a00 | 来源:发表于2017-07-09 18:20 被阅读6次
    properties:集合

    功能流:把map结合中的数据写入本地持久化
    没哟泛型,因为key和value类型固定,都是string类型
    父类hashtable方法:

    keySet() 获取所有key集合
    put(key,value) 添加元素
     get(key) 根据key获取value
    

    特有方法

    setProperty(key,value) 添加元素
    getProperty(key) 根据key获取对应的value
    stringPropertyNames(); 获取所有的key
    store(writer,comment)以gbk写本地,可以看懂
    store(outputStream,comments)写入本地以ios-8859-1写入本地,看不懂
    loade(inputStream) 读取数据
    loade(reader)读取数据
    

    注意:store中的流不用close() ,store底层帮我们关了。

    // 写入数据
    Properties p = new Properties();
    p.setProperty("1","1");
    p.setProperty("2","2");
    p.setProperty("3","3");
    p.store(new fileWriter(""F:\\aaa\\1.txt),"text");
    // 读取数据
    p.load(new FileReader("F:\\aaa\\1.txt"));
    Set<String> keys = p.stringPropertyNames();
    for(Iterator<String> iterator = keys.iterator;iterator.hasNext();){
        String key = iterator.next();
        String value = p.getProperty(key);
    }
    
    序列化和反序列化

    ObjectOutputStream(outputStream)
    writeObject(obj)
    注意:对象要实现Serializable接口,如果一个对象要想序列化或者反序列化,那么对象所属类,必须实现Serializable,这个接口中什么都没有,这样的接口称为标记性接口,作用,起到标记作用,只要实现这个接口,那么类的对象就可以被序列化或者反序列化

    ObjectInputStream(inputStream)
    readObject(obj)

    只要一个类实现了Serializable接口之后,只要编译,那么jvm会根据类所有内容(类名,报名,方法修饰符,属性,属性值等)生成一个默认版本号 serialVersionUID
    这个版本号最后会计算为long类型的数据,当我们使用序列化配置文件,也会把版本号存入,当你修改内容的时候会重新生成一个版本号,这样会导致,配置文件版本号和本地版本号不一致

    显示声明 serialVersionUID 版本号
    不想被序列化到本地:
    1.用static 修饰
    2.transient 瞬态 修饰的内容不会被序列化

      ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("F:\\aaa\\student.txt" ));
      out.writeObject( new Student("dubo" , 23));       
      ObjectInputStream input = new ObjectInputStream(new FileInputStream("F:\\aaa\\student.txt" ));
      Student s = (Student) input.readObject();
      System. out.println(s .getName()+"----------"+ s.getAge());
    

    如果想要保存多个对象,可以把对象存到数组或集合中,然后把集合序列化

    相关文章

      网友评论

        本文标题:properties-----序列化

        本文链接:https://www.haomeiwen.com/subject/fcqehxtx.html