zoukankan      html  css  js  c++  java
  • java中的序列化与反序列化,还包括将多个对象序列化到一个文件中

    package Serialize;
    
    /**
     * Created by hu on 2015/11/7.
     */
    //实现序列化必须实现的接口,这就是一个空接口,起到标识的作用
    import java.io.Serializable;
    
    /**
     * 用来进行序列化和反序列化的类
     * */
    public class person implements Serializable {
        private int age;
        private String name;
        private String sex;
        public person(int age, String name, String sex) {
            this.age = age;
            this.name = name;
            this.sex = sex;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        @Override
        public String toString() {
            return "person: name="+name+";sex="+sex+";age="+age;
        }
    }
    **************************************************************
    package Serialize;
    
    import java.io.*;
    
    /**
     * Created by hu on 2015/11/7.
     */
    //序列化和反序列化
    public class demo1 {
        public static void main(String[] args)throws Exception{
            for(int i=0;i<100;i++){
                person pp=new person(i,"hujingwei"+i,"male");
                SerializePerson(pp);
            }
            //反序列化只会序列文件中第一个对象
            person p=DeserializePerson();
            System.out.println(p);
        }
        //序列化方法,将对象写到磁盘上的一个文件上
        public static void SerializePerson(person p)throws IOException{
            /*
            * 如果FileOutputStream的构造函数中没有第二个参数“true”,那么新添加一个对象的时候,会将上一次序列化到文件
            * 中的对象覆盖掉,这种情况下,文件中永远只有一个序列化的对象;将第二个参数设置为“true”的时候,会将每次添加
            * 的对象放在文件的末尾。
            * */
            //ObjectOutputStream对象输出流,将person对象存储到person.txt中,完成对person对象序列化操作
            ObjectOutputStream oo=new ObjectOutputStream(new FileOutputStream(new File("D:/person.txt"),true));
            //将序列化的对象写入到输入流中去
            oo.writeObject(p);
            System.out.println("Serialize person successfully!");
            oo.close();
        }
        //反序列化,将一个对象从磁盘文件中读出来
        public static person DeserializePerson()throws Exception{
            //ObjectInputStream对象输入流,将person对象从文件中读出
            ObjectInputStream oi=new ObjectInputStream(new FileInputStream(new File("D:/person.txt")));
            person p=(person)oi.readObject();
            System.out.println("Deserialize person successfully!");
            return p;
        }
    }
    ********************************************************
    package Serialize;
    
    /**
     * Created by hu on 2015/11/7.
     */
    
    import java.io.*;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 序列化和反序列化多个对象
     * */
    public class demo2 {
        public static void main(String[] args)throws Exception{
            Serialize();
            List list=Deserialize();
            for (int i=0;i<list.size();i++){
                person p=(person)list.get(i);
                System.out.println(p);
            }
        }
        //序列化方法
        public static void Serialize() throws Exception{
            //将多个对象保存在一个list中,然后将list当作一个对象存入到文件中(list已经实现了Serializable接口)
            List<person> list= new ArrayList<person>();
            for (int i=0;i<100;i++){
                person p=new person(i,"test"+i,"male");
                list.add(p);
            }
            ObjectOutputStream oo=new ObjectOutputStream(new FileOutputStream(new File("D:/person.txt"),true));
            oo.writeObject(list);
            oo.close();
        }
        //反序列化方法
        public static List Deserialize() throws Exception{
            ObjectInputStream oi=new ObjectInputStream(new FileInputStream(new File("D:/person.txt")));
            List list=(List)oi.readObject();
            return list;
        }
    }
  • 相关阅读:
    在CHROME里安装 VIMIUM 插件, 方便操作
    Python 判断变量的类型
    Python 格式化输出
    ssh 使用
    [转载] 构造linux 系统下免密码ssh登陆  _How to establish password-less login with SSH
    [转载] SSH入门学习基础教程
    SSH 常用命令解析
    【转载】 调研文献的方法介绍,适用于各个领域
    POJ 2549 Sumsets
    HDU 5858 Hard problem
  • 原文地址:https://www.cnblogs.com/hujingwei/p/4946165.html
Copyright © 2011-2022 走看看