首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java兑现序列化作用及实例

2012-12-28 
Java实现序列化作用及实例(一)序列化作用:把内存中的对象转化为另一种形式,以供传输或存储。(二)序列化前提

Java实现序列化作用及实例

(一)序列化作用:

把内存中的对象转化为另一种形式,以供传输或存储。

(二)序列化前提:

(1)要序列化对象必须是可序列化的,即必须实现?Serializable?接口。

(2)要序列化对象的属性也都是可序列化的。

(3)要序列化对象引用的对象也必须是可序列化的,如:要序列化一个 HashMap 实例,需要把放入到HashMap中的对象也都序列化。

(4)要序列化一个内部类,该内部类必须可序列化,并且外部类也必须可序列化。

(5)基本数据类型都是可以序列化的。

(三)序列化举例:

下面是一个User类,演示了把一个User实例写入文件,然后在再文件中读出。

package serialize;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class User implements Serializable {    private static final long serialVersionUID = 2143L;    private String name;    private int age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public User(String name, int age) {        this.name = name;        this.age = age;    }    /**     * @todo 将一个可以序列化的对象写入文件     * @param obj     *            要保存的对象     * @param fileName     *            目标文件     */    public void writeToFile(Object obj, String fileName) {        ObjectOutputStream oos = null;        FileOutputStream fos = null;        try {            fos = new FileOutputStream(fileName);            oos = new ObjectOutputStream(fos);            oos.writeObject(obj);            oos.flush();            System.out.println("write ok!");        } catch (Exception e) {            System.out.println("write false! The error : " + e.getStackTrace());        } finally {            //关闭文件流            try {                if (oos != null) {                    oos.close();                }                if(fos != null){                    fos.close();                }            } catch (IOException e) {                System.out.println("close flus false! The error : "  + e.getStackTrace());            }        }    }    /**     * @param fileName     *            保存对象的文件     * @return 从文件中得到的对象     */    public Object getObjFromFile(String fileName) {        Object obj = null;        FileInputStream fis = null;        ObjectInputStream ois = null;        try {            fis = new FileInputStream(fileName);            ois = new ObjectInputStream(fis);            obj = ois.readObject();            ois.close();            System.out.println("read ok!");        } catch (Exception e) {            e.printStackTrace();        } finally {            //关闭文件流            try {                if (ois != null) {                    ois.close();                }                if(fis != null){                    fis.close();                }            } catch (IOException e) {                System.out.println("close flus false! The error : "  + e.getStackTrace());            }        }        return obj;    }    public static void main(String[] args) {        String fileName = "c://user.txt"; // 保存对象的文件        User user = new User("@pony", 28); // 创建一个User对象        user.writeToFile(user, fileName); // 将对象写入文件        User u = (User) (user.getObjFromFile(fileName)); // 从文件中取得对象        // 输出对象名                if (u != null)            System.out.println("ok, get the user object from the file. /nThe user's name is : " + u.name);     }}
?

热点排行