日期:2014-05-20  浏览次数:20680 次

求高人指教,java中关于序列化和反序列化的问题
怎么把多个对象反序列化出来??


package com.java.taskIO;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Test6 {
public static void main(String[] args) throws Exception {
List list = new ArrayList();
list.add(new Person("张三", 20));
list.add(new Person("李四", 21));
list.add(new Person("王五", 22));
list.add(new Person("赵六", 23));
OutputStream fos = new FileOutputStream(
"C:\\Users\\wd\\Desktop\\1.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
Iterator it = list.iterator();
while (it.hasNext()) {
oos.writeObject(it.next());
}

InputStream is = new FileInputStream("C:\\Users\\wd\\Desktop\\1.txt");
ObjectInputStream ois = new ObjectInputStream(is);
Person p2 = (Person) ois.readObject();
System.out.println(p2);
oos.close();
ois.close();
}
}
我开始添加了4个对象,怎么才能一个一个的反序列化出来呢??我这样做只能现实第一个对象。

------解决方案--------------------
 InputStream is = new FileInputStream("C:\\Users\\wd\\Desktop\\1.txt");
        ObjectInputStream ois = new ObjectInputStream(is);
while(is.available()>0){     //注意这里改成这样的判断文件流是否还有数据。
        <span style="color: #FF0000;">Person p2 = (Person) ois.readObject();</span>
        System.out.println(p2);
}
        oos.close();
        ois.close();

这个问题应该可以解决了,记得给点分哈。