`
xiangkun
  • 浏览: 102388 次
  • 性别: Icon_minigender_1
  • 来自: 马尔代夫
社区版块
存档分类
最新评论

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序列化和反序列化的方法

    java 序列化和反序列化的方法 Java 序列化和反序列化是 Java 语言中的一种机制,用于将对象转换为字节流,以便在网络上传输或存储。序列化是将对象转换为字节流的过程,而反序列化是将字节流转换回对象的过程。 在...

    java序列化和反序列化

    ### Java序列化与反序列化详解 #### 一、Java序列化概述 Java序列化(Serialization)是一项重要的功能,它可以将对象的状态转化为一系列字节,从而实现对象的持久化存储或在网络上传输。序列化机制使得Java对象...

    Java对象序列化和反序列化工具Xson.zip

    Xson是一个Java对象序列化和反序列化程序。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。 Maven:  &lt;groupId&gt;com.github.xsonorg&lt;/groupId&gt;  &lt;artifactId&gt;xson-core  &lt;version&gt;1.0.1 ...

    java反序列化工具

    Java反序列化是一种将已序列化的对象状态转换回对象的过程,它是Java平台中持久化数据的一种常见方式。在Java应用程序中,序列化用于保存对象的状态以便稍后恢复,或者在网络间传输对象。然而,这个过程也可能引入...

    java serializable 序列化与反序列化

    **一、Java序列化** 1. **什么是序列化**:序列化是将对象的状态(属性和成员变量)转换为可以存储或传输的数据格式的过程。在Java中,通常是将对象转换为字节数组,以便写入磁盘或通过网络发送。 2. **为什么需要...

    java序列化和反序列化1

    Java的序列化和反序列化是Java开发中重要的概念,主要涉及对象状态的持久化以及在网络传输中的数据转换。在Java中,序列化是将一个对象转换为字节序列的过程,而反序列化则是将字节序列恢复为原始对象的过程。 1. *...

    java序列化(Serializable)的作用和反序列化

    ### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化是什么? 序列化是指将程序中的对象转换为字节流的过程,从而方便存储或传输这些对象。通常,序列化用于将对象的状态(即其实例变量的值,而非...

    JAVA序列化和反序列化的底层实现原理解析

    JAVA序列化和反序列化的底层实现原理解析 一、基本概念 JAVA序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程。序列化是把对象转换成有序字节流,以便在网络上传输...

    java序列化与反序列化

    Java序列化和反序列化是Java平台中的核心特性,允许对象在各种上下文中持久化和传输。虽然它提供了许多便利,但同时也需要注意安全性问题和性能优化。在实际开发中,根据需求选择合适的序列化策略和工具是至关重要的...

    Java 序列化和反序列化实例详解

    Java 序列化和反序列化实例详解 Java 序列化和反序列化是 Java 语言中两个重要的概念,它们在分布式应用中扮演着至关重要的角色。序列化是指将对象转换为字节流的过程,而反序列化则是指将字节流恢复为对象的过程。...

    java 对象的序列化与反序列化

    Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...

    java序列化和反序列化,面试必备

    Java序列化和反序列化是Java开发中常见且重要的概念,尤其在面试中常常被问及。序列化是指将一个Java对象转化为字节序列的过程,这样可以将对象的状态持久化到磁盘上或者在网络中进行传输。反序列化则是相反的过程,...

    C#和Java的序列化反序列化

    而在Java中,我们可以通过实现`Serializable`接口来使类支持序列化,或者使用`java.io.ObjectOutputStream`和`java.io.ObjectInputStream`进行对象的序列化和反序列化。 接下来,我们讨论反序列化。反序列化是序列...

    java序列化(Serializable)的作用和反序列化.doc

    ### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化的概念 序列化是指将程序中的对象转换为一系列字节流的过程,主要用于保存对象的状态或在网络之间传输对象。序列化的主要目的是为了能够持久化...

    java 常用序列化和反序列化框架使用demo

    Java序列化和反序列化是将对象的状态转换为字节流和从字节流恢复对象状态的过程,这对于数据持久化、网络传输以及跨进程通信等场景至关重要。在Java中,`java.io.Serializable`接口用于标记一个类是可序列化的。然而...

    Java序列化与反序列化<转>

    Java序列化与反序列化是Java编程中...通过理解和熟练掌握Java序列化和反序列化,开发者可以有效地处理对象的持久化和网络通信,提高程序的灵活性和可维护性。在实际项目中,根据具体需求选择合适的序列化策略至关重要。

    java对象序列化和反序列化

    综上,Java对象序列化和反序列化是Java开发中的基础技能,它们在数据持久化、网络通信等方面发挥着关键作用。了解并掌握这些知识,能够帮助开发者更好地设计和实现各种功能。在实际应用中,需要注意安全性和版本兼容...

    Java序列化与反序列化

    Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化

Global site tag (gtag.js) - Google Analytics