• map持久化类 Properties;对象序列化 ObjectOutputStream


    Properties是HashTable的子类,可以用map的方法,没有泛型,键值对是字符串

    无参构造   Properties()

    成员方法

    存入    setProperty(String key, String value)  // 不用put

    取值   getProperty(String key) 

    写入文件       store(OutputStream out,String comments) // 将集合中的元素储存到文件中

          store(Writer w, String comments)

    从文件中读取   load(InputStream inStream)

           load(Reader reader)

    文件中存储 key=value 中间不能有空格,不要多加任何东西 文件后缀 .properties
    # 为注释

            Properties p = new Properties();
            p.setProperty("name", "zhang3");   // put into map
            p.setProperty("number", "15700");
            p.setProperty("age", "23");
            
            
            // 1 store(OutputStream out, String comments) 
            OutputStream out = new FileOutputStream("E:/test.properties");
            p.store(out, "#");
            
            // 2 store(Writer w, String comments)
            Writer w = new FileWriter("E:/w.properties");
            p.store(w,"#");
            
            // 1 load(InputStream inStream)
            InputStream inStream = new FileInputStream("E:/test.properties");
            p.load(inStream);
            
            // 2 load(Reader r)
            Reader r = new FileReader("E:/w.properties");
            p.load(r);
            String age = p.getProperty("age");   //   23
    View Code

    对象序列化与反序列化

    注意 1 静态成员变量不能序列化  

    2 transient  声明的成员变量不能序列化   public transient int age;

    3 对象要实现Serializable接口  (标记接口)

    4  InvalidClassException 修改源码后没有重新写对象,导致序列号不同,序列号冲突问题

    做一个不变的序列号 static final long serialVersioUID = 12154633489663L ,告诉编译器自己有序列号,编译器就不会生成

        public static void main(String[] args)  throws IOException, ClassNotFoundException{
            
    //        People p = new People();
            //writeObj(p);
            People p = (People) readObj("E:/obj.txt");
            System.out.println(p.age);
        }
        
        public static void writeObj(Object obj) throws IOException{
            
            OutputStream out = new FileOutputStream("E:/obj.txt");
            ObjectOutputStream oos = new ObjectOutputStream(out);
            
            oos.writeObject(obj);
            oos.close();
            
        }
        
        public static Object readObj(String name) throws IOException, ClassNotFoundException{
            
            InputStream in = new FileInputStream(name);
            ObjectInputStream ois = new ObjectInputStream(in);
            Object obj = ois.readObject();
            return obj; 
        }
    View Cod
  • 相关阅读:
    【LSGDOJ 1408】邮局
    中间件小姐姐直播“带货”——阿里程序员必知的插件
    ChaosBlade 发布对 C++ 应用混沌实验的支持
    来自 Spring Cloud 官方的消息,Spring Cloud Alibaba 即将毕业
    大合集 | 9 场 Dubbo Meetup 回顾视频和PPT下载
    Future Maker | 领跑亚太 进击的阿里云数据库
    更简单易用的数据仓库,阿里云重磅推出分析型数据库3.0版
    AnalyticDB for MySQL 3.0 技术架构解析
    阿里云 EMAS HTTPDNS 联合函数计算重磅推出 SDNS 服务,三大能力获得突破
    新一代互联网传输协议QUIC浅析
  • 原文地址:https://www.cnblogs.com/YKang/p/7291189.html
Copyright © 2020-2023  润新知