读书人

Java IO上-对象序列化与反序列化

发布时间: 2012-10-31 14:37:31 作者: rapoo

Java IO下---对象序列化与反序列化

?

package com.iflytek.io03;import java.io.Serializable;/** * @author xudongwang 2012-1-8 * * Email:xdwangiflytek@gmail.com */public class Person implements Serializable {private String name;private int age;public Person(String name, int age) {super();this.name = name;this.age = age;}public String toString() {return "姓名:" + this.name + ",年龄:" + this.age;}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;}}

?

?下面通过ObjectOutputStream完成序列化操作:

?

package com.iflytek.io03;import java.io.File;import java.io.FileOutputStream;import java.io.ObjectOutputStream;/** * @author xudongwang  2012-1-8 * *  Email:xdwangiflytek@gmail.com */public class ObjectOutputStreamDemo {public static void main(String args[]) throws Exception {File file = new File("d:" + File.separator + "demo.txt");ObjectOutputStream oos = null;oos = new ObjectOutputStream(new FileOutputStream(file));Person per = new Person("王旭东", 21);oos.writeObject(per);oos.close();}}

?

?对象被实例化之后,就可以通过ObjectInputStream进行反序列化的操作

?

package com.iflytek.io03;import java.io.File;import java.io.FileInputStream;import java.io.ObjectInputStream;/** * @author xudongwang  2012-1-8 * *  Email:xdwangiflytek@gmail.com */public class ObjectInputStreamDemo {public static void main(String args[]) throws Exception {File file = new File("d:" + File.separator + "demo.txt");ObjectInputStream ois = null;ois = new ObjectInputStream(new FileInputStream(file));Object obj = ois.readObject();Person per = (Person) obj;System.out.println(per);}}

?

?以上操作实际上是整个对象进行的序列化操作,如果现在假设类中的某个属性不希望被序列化的话,则使用transient关键字进行声明;

?

private transient String name;

?

?由上面可知可以对一个对象序列化,那么因为Object可以接受任意的引用数据类型,所以也可以同时对多个对象一起进行序列化操作,包括数组;

?

package com.iflytek.io03;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;/** * @author xudongwang  2012-1-8 * *  Email:xdwangiflytek@gmail.com */public class SerializableDemo {public static void main(String args[]) throws Exception {Person per[] = { new Person("张三", 30), new Person("李四", 40),new Person("王五", 50) };serializable(per);Person p[] = (Person[]) delSerializable();print(p);}public static void serializable(Object obj) throws Exception {File file = new File("d:" + File.separator + "demo.txt");ObjectOutputStream oos = null;oos = new ObjectOutputStream(new FileOutputStream(file));oos.writeObject(obj);oos.close();}public static Object delSerializable() throws Exception {Object temp = null;File file = new File("d:" + File.separator + "demo.txt");ObjectInputStream ois = null;ois = new ObjectInputStream(new FileInputStream(file));temp = ois.readObject();return temp;}public static void print(Person per[]) {for (Person p : per) {System.out.println(p);}}}
?

?

读书人网 >编程

热点推荐