微言耸听

导航

Java 序列化和反序列化

原文: http://blog.163.com/lyq_163_2009/blog/static/13408269620116243439106/

1. 创建对象时,只要需要,它就会一直存在,但是在程序终止时,无论如何它东欧不会继续存在。
2. Java的对象序列化,实现了java.io.Serializable接口的对象转换成一个字节序列,并能够在以后将这个字节序列化完全恢复为原来的对象。
3. 只要对象实现了java.io.Serializable接口(该接口仅是一个标记接口,不包括任何方法),对象的序列化处理就会非常简单。
4. 总结,序列化就将Java对象持久化;反序列化就是将持久化的内容转换为Java对象。

package test;

import java.io.Serializable;

public class Bean implements Serializable{

    private static final long serialVersionUID = -3437520744254599749L;
 
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
 
}



package test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Test {

    /**
    * 序列化
    * 
    * @param file
    * @param bean
    * @throws IOException
    */
    public static void save(File file,Bean bean)throws IOException{
        FileOutputStream fis = new FileOutputStream(file);
        ObjectOutputStream oos = new ObjectOutputStream(fis);
        oos.writeObject(bean);
        oos.flush();
        oos.close();
        fis.close();
    }
 
    /**
    * 反序列化
    * 
    * @param file
    * @return
    * @throws IOException
    */
    public static Object read(File file)throws IOException{
        FileInputStream fis = new FileInputStream(file);
        ObjectInputStream ois = new ObjectInputStream(fis);
        Object obj = null;
        try {
            obj = ois.readObject();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        ois.close();
        fis.close();
        return obj;
    }
 
    /**
    * @param args
    */
    public static void main(String[] args){
        try{
            Bean bean1 = new Bean();
            bean1.setName("name");
            Test.save(new File("c://001.txt"), bean1);
            Bean bean2 = (Bean)Test.read(new File("c://001.txt"));
            System.out.println(bean2.getName());
        }catch(Exception e){
            e.printStackTrace();
        }
    }

}

 

posted on 2013-01-15 15:43  微言耸听  阅读(197)  评论(0)    收藏  举报