如果tmp文件中有两个类对象,如何遍历取出。目前可以分两次读出,代码如下
package com.donghe.package1;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
public class ObjectIntputStreamDemo {
public static void main(String[] args){
ObjectInputStream ois =null;
try {
ois = new ObjectInputStream(new FileInputStream("e:\\person.tmp") );
Object ob = ois.readObject();
System.out.println(ois.read());
if (ob!= null){
Person p= (Person)ob;
System.out.println(p.getId());
System.out.println(p.getName());
System.out.println(p.getAge());
}
System.out.println(ois.read());
Object ob2 = ois.readObject();
if (ob2!= null){
Person p= (Person)ob2;
System.out.println(p.getId());
System.out.println(p.getName());
System.out.println(p.getAge());
}
System.out.println(ois.read());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
ois.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
------解决方案--------------------
方法之一:(常用的方法)将若干个对象(数量不定)都装入一个容器中(如:ArrayList之类),然后将容器这一个对象写入就行了。读取一个对象(即容器对象)就行了。推荐用第一种.省代码
方法之二:(若不想用容器),则由于数量不定,正是用EOFException来判断结束。代码结构如下:(无论是readInt()读int,还是readObject()读对象)
try{
while(true)
{
Object o=ois.radObject();
处理已读出的对象o;
}
}catch(EOFxception e){
//已从流中读完。
}
finallly{
//流的关闭。
}