Java序列化和反序列化

实例代码:

view plaincopy to clipboardprint?
import java.io.FileInputStream;   
import java.io.FileNotFoundException;   
import java.io.FileOutputStream;   
import java.io.IOException;   
import java.io.ObjectInputStream;   
import java.io.ObjectOutputStream;   
import java.io.Serializable;   
import java.util.ArrayList;   
import java.util.Date;   
import java.util.HashMap;   
import java.util.List;   
  
  
public class Test {   
  
    /**  
     * @param args  
     */  
    public static void main(String[] args) {   
       
        try {   
            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("D:/objectFile.obj"));   
               
            Customer customer = new Customer("中国人",23);   
            out.writeObject("你好!");   
            out.writeObject(new Date());   
            out.writeObject(customer);   
            out.writeInt(123);    
               
            List list = new ArrayList();   
            int i =0 ;   
            while(i<100) {   
                Customer customer2 = new Customer("中国人",i);   
                list.add(customer2);   
                i++;   
            }   
            HashMap hashMap = new HashMap();   
            hashMap.put("customer", list);   
               
            out.writeObject(hashMap);   
            out.close();   
               
            ObjectInputStream in = new ObjectInputStream(new FileInputStream("D:/objectFile.obj"));   
  
            System.out.println("obj1= " + (String) in.readObject());   
            System.out.println("obj2= " + (Date) in.readObject());   
            Customer obj3 = (Customer) in.readObject();   
            System.out.println("obj3= " + obj3);   
            int obj4 = in.readInt();   
            System.out.println("obj4= " + obj4);   
               
            Object obj5 = in.readObject();   
            System.out.println(obj5);   
            HashMap hash_map = (HashMap)obj5;   
            List l = (List) hash_map.get("customer");   
            System.out.println("size: " + l.size());   
            for(int ii=0; ii<l.size() -1 ; ii++) {   
                Customer c = (Customer)l.get(ii);   
                System.out.println(c.getName());   
                System.out.println(c.getAge());   
            }   
            in.close();   
               
        } catch (FileNotFoundException e) {   
               
            e.printStackTrace();   
        } catch (IOException e) {   
               
            e.printStackTrace();   
        } catch (ClassNotFoundException e) {   
  
            e.printStackTrace();   
        }   
  
    }   
  
  
}   
  
  
class Customer implements Serializable {   
  
    private static final long serialVersionUID = 1L;   
       
    private String name;   
    private int age;   
       
    public String getName() {   
        return name;   
    }   
       
    public int getAge() {   
        return age;   
    }   
       
    public Customer(String name, int age) {   
        this.name = name;   
        this.age = age;   
    }   
  
    public String toString() {   
        return "name=" + name + ", age=" + age;   
    }   
}  


测试结果:

view plaincopy to clipboardprint?
obj1= 你好!   
obj2= Mon Feb 09 21:18:34 CST 2009   
obj3= name=中国人, age=23   
obj4= 123   
{customer=[name=中国人, age=0, name=中国人, age=1, name=中国人, age=2, name=中国人, age=3, name=中国人, age=4, name=中国人, age=5, name=中国人, age=6, name=中国人, age=7, name=中国人, age=8, name=中国人, age=9, name=中国人, age=10, name=中国人, age=11, name=中国人, age=12, name=中国人, age=13, name=中国人, age=14, name=中国人, age=15, name=中国人, age=16, name=中国人, age=17, name=中国人, age=18, name=中国人, age=19, name=中国人, age=20, name=中国人, age=21, name=中国人, age=22, name=中国人, age=23, name=中国人, age=24, name=中国人, age=25, name=中国人, age=26, name=中国人, age=27, name=中国人, age=28, name=中国人, age=29, name=中国人, age=30, name=中国人, age=31, name=中国人, age=32, name=中国人, age=33, name=中国人, age=34, name=中国人, age=35, name=中国人, age=36, name=中国人, age=37, name=中国人, age=38, name=中国人, age=39, name=中国人, age=40, name=中国人, age=41, name=中国人, age=42, name=中国人, age=43, name=中国人, age=44, name=中国人, age=45, name=中国人, age=46, name=中国人, age=47, name=中国人, age=48, name=中国人, age=49, name=中国人, age=50, name=中国人, age=51, name=中国人, age=52, name=中国人, age=53, name=中国人, age=54, name=中国人, age=55, name=中国人, age=56, name=中国人, age=57, name=中国人, age=58, name=中国人, age=59, name=中国人, age=60, name=中国人, age=61, name=中国人, age=62, name=中国人, age=63, name=中国人, age=64, name=中国人, age=65, name=中国人, age=66, name=中国人, age=67, name=中国人, age=68, name=中国人, age=69, name=中国人, age=70, name=中国人, age=71, name=中国人, age=72, name=中国人, age=73, name=中国人, age=74, name=中国人, age=75, name=中国人, age=76, name=中国人, age=77, name=中国人, age=78, name=中国人, age=79, name=中国人, age=80, name=中国人, age=81, name=中国人, age=82, name=中国人, age=83, name=中国人, age=84, name=中国人, age=85, name=中国人, age=86, name=中国人, age=87, name=中国人, age=88, name=中国人, age=89, name=中国人, age=90, name=中国人, age=91, name=中国人, age=92, name=中国人, age=93, name=中国人, age=94, name=中国人, age=95, name=中国人, age=96, name=中国人, age=97, name=中国人, age=98, name=中国人, age=99]}   
size: 100   
中国人   
0   
中国人   
1   
中国人   
2   
中国人   
3   
中国人   
4   
中国人   
5   
中国人   
6   
中国人   
7   
中国人   
8   
中国人   
9   
中国人   
10   
中国人   
11   
中国人   
12   
中国人   
13   
中国人   
14   
中国人   
15   
中国人   
16   
中国人   
17   
中国人   
18   
中国人   
19   
中国人   
20   
中国人   
21   
中国人   
22   
中国人   
23   
中国人   
24   
中国人   
25   
中国人   
26   
中国人   
27   
中国人   
28   
中国人   
29   
中国人   
30   
中国人   
31   
中国人   
32   
中国人   
33   
中国人   
34   
中国人   
35   
中国人   
36   
中国人   
37   
中国人   
38   
中国人   
39   
中国人   
40   
中国人   
41   
中国人   
42   
中国人   
43   
中国人   
44   
中国人   
45   
中国人   
46   
中国人   
47   
中国人   
48   
中国人   
49   
中国人   
50   
中国人   
51   
中国人   
52   
中国人   
53   
中国人   
54   
中国人   
55   
中国人   
56   
中国人   
57   
中国人   
58   
中国人   
59   
中国人   
60   
中国人   
61   
中国人   
62   
中国人   
63   
中国人   
64   
中国人   
65   
中国人   
66   
中国人   
67   
中国人   
68   
中国人   
69   
中国人   
70   
中国人   
71   
中国人   
72   
中国人   
73   
中国人   
74   
中国人   
75   
中国人   
76   
中国人   
77   
中国人   
78   
中国人   
79   
中国人   
80   
中国人   
81   
中国人   
82   
中国人   
83   
中国人   
84   
中国人   
85   
中国人   
86   
中国人   
87   
中国人   
88   
中国人   
89   
中国人   
90   
中国人   
91   
中国人   
92   
中国人   
93   
中国人   
94   
中国人   
95   
中国人   
96   
中国人   
97   
中国人   
98  


讲这个需要提到 transient关键字的关系,具体的大家测试就可以,就是该关键字修饰的不序列化保存。

view plaincopy to clipboardprint?
package com;   
  
import java.io.FileInputStream;      
import java.io.FileNotFoundException;      
import java.io.FileOutputStream;      
import java.io.IOException;      
import java.io.ObjectInputStream;      
import java.io.ObjectOutputStream;      
import java.io.Serializable;      
import java.util.ArrayList;      
import java.util.Date;      
import java.util.HashMap;      
import java.util.List;      
     
     
public class Test {      
     
    /**    
     * @param args    
     */     
    public static void main(String[] args) {      
          
        try {      
//            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("D:/objectFile.obj"));      
//                  
//            Customer customer = new Customer("中国人",23);      
//            out.writeObject("你好!");      
//            out.writeObject(new Date());      
//            out.writeObject(customer);      
//            out.writeInt(123);       
//                  
//            List list = new ArrayList();      
//            int i =0 ;      
//            while(i<10) {      
//                Customer customer2 = new Customer("中国人",i);      
//                list.add(customer2);      
//                i++;      
//            }      
//            HashMap hashMap = new HashMap();      
//            hashMap.put("customer", list);      
//                  
//            out.writeObject(hashMap);      
//            out.close();      
                  
            ObjectInputStream in = new ObjectInputStream(new FileInputStream("D:/objectFile.obj"));      
     
            System.out.println("obj1= " + (String) in.readObject());      
            System.out.println("obj2= " + (Date) in.readObject());      
            Customer obj3 = (Customer) in.readObject();      
            System.out.println("obj3= " + obj3);      
            int obj4 = in.readInt();      
            System.out.println("obj4= " + obj4);      
                  
            Object obj5 = in.readObject();      
            System.out.println(obj5);      
            HashMap hash_map = (HashMap)obj5;      
            List l = (List) hash_map.get("customer");      
            System.out.println("size: " + l.size());      
            for(int ii=0; ii<l.size() -1 ; ii++) {      
                Customer c = (Customer)l.get(ii);      
                System.out.println(c.getName());      
                System.out.println(c.getAge());      
            }      
            in.close();      
                  
        } catch (FileNotFoundException e) {      
                  
            e.printStackTrace();      
        } catch (IOException e) {      
                  
            e.printStackTrace();      
        } catch (ClassNotFoundException e) {      
     
            e.printStackTrace();      
        }      
     
    }      
     
     
}      
     
     
class Customer implements Serializable {      
     
    private static final long serialVersionUID = 1L;      
          
    private String name;      
    private int age;      
    // 新添加的   
    private String gender;   
          
    public String getName() {      
        return name;      
    }      
          
    public int getAge() {      
        return age;      
    }      
          
    public Customer(String name, int age) {      
        this.name = name;      
        this.age = age;      
    }      
     
    public String toString() {      
        return "name=" + name + ", age=" + age;      
    }   
  
    public String getGender() {   
        return gender;   
    }   
  
    public void setGender(String gender) {   
        this.gender = gender;   
    }      
}    





==============================================

package com;   
  
import java.io.FileInputStream;      
import java.io.FileNotFoundException;      
import java.io.FileOutputStream;      
import java.io.IOException;      
import java.io.ObjectInputStream;      
import java.io.ObjectOutputStream;      
import java.io.Serializable;      
import java.util.ArrayList;      
import java.util.Date;      
import java.util.HashMap;      
import java.util.List;      
     
     
public class Test {      
     
    /**    
     * @param args    
     */     
    public static void main(String[] args) {      
          
        try {      
//            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("D:/objectFile.obj"));      
//                  
//            Customer customer = new Customer("中国人",23);      
//            out.writeObject("你好!");      
//            out.writeObject(new Date());      
//            out.writeObject(customer);      
//            out.writeInt(123);       
//                  
//            List list = new ArrayList();      
//            int i =0 ;      
//            while(i<10) {      
//                Customer customer2 = new Customer("中国人",i);      
//                list.add(customer2);      
//                i++;      
//            }      
//            HashMap hashMap = new HashMap();      
//            hashMap.put("customer", list);      
//                  
//            out.writeObject(hashMap);      
//            out.close();      
                  
            ObjectInputStream in = new ObjectInputStream(new FileInputStream("D:/objectFile.obj"));      
     
            System.out.println("obj1= " + (String) in.readObject());      
            System.out.println("obj2= " + (Date) in.readObject());      
            Customer obj3 = (Customer) in.readObject();      
            System.out.println("obj3= " + obj3);      
            int obj4 = in.readInt();      
            System.out.println("obj4= " + obj4);      
                  
            Object obj5 = in.readObject();      
            System.out.println(obj5);      
            HashMap hash_map = (HashMap)obj5;      
            List l = (List) hash_map.get("customer");      
            System.out.println("size: " + l.size());      
            for(int ii=0; ii<l.size() -1 ; ii++) {      
                Customer c = (Customer)l.get(ii);      
                System.out.println(c.getName());      
                System.out.println(c.getAge());      
            }      
            in.close();      
                  
        } catch (FileNotFoundException e) {      
                  
            e.printStackTrace();      
        } catch (IOException e) {      
                  
            e.printStackTrace();      
        } catch (ClassNotFoundException e) {      
     
            e.printStackTrace();      
        }      
     
    }      
     
     
}      
     
     
class Customer implements Serializable {      
     
    private static final long serialVersionUID = 1L;      
          
    private String name2;      
    private int age;      
    // 新添加的   
    private String gender;   
          
    public String getName() {      
        return name2;      
    }      
          
    public int getAge() {      
        return age;      
    }      
          
    public Customer(String name, int age) {      
        this.name2 = name;      
        this.age = age;      
    }      
     
    public String toString() {      
        return "name=" + name2 + ", age=" + age;      
    }   
  
    public String getGender() {   
        return gender;   
    }   
  
    public void setGender(String gender) {   
        this.gender = gender;   
    }      
}     
  
  
  
  
obj1= 你好!   
obj2= Sun Feb 15 15:35:52 CST 2009   
obj3= name=null, age=23   
obj4= 123   
{customer=[name=null, age=0, name=null, age=1, name=null, age=2, name=null, age=3, name=null, age=4, name=null, age=5, name=null, age=6, name=null, age=7, name=null, age=8, name=null, age=9]}   
size: 10   
null  
0   
null  
1   
null  
2   
null  
3   
null  
4   
null  
5   
null  
6   
null  
7   
null  
8  

你可能感兴趣的:(java,C++,c,C#,sun)