ObjectInputStream ois = new ObjectInputStream(fis);
// 读取对象并放入List容器中
while(fis.available() > 0)
{
list.add((User)ois.readObject());
}
ois.close();
return list; // 返回List
}
static private void writeObj(Object[] objs,String fileName) throws Exception
{
// 使用命令行参数中指定的文件名
// 创建流对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
// 写入对象
for(Object o : objs)
{
oos.writeObject(o);
}
// 关闭流
oos.close();
}
}
注意,当我们想要向一个已经存在的文件中追加对象时,应该重写ObjectOutputStream的writeStreamHeader()方法,并空实现。因为,ObjectOutputStream在写入数据的时候会加上一个特别的流头(Stream Header),在读取数据的时候会先检查这个流头。所以我们在向文件中追加对象的时候ObjectOutputStream就会再次向文件中写入流头,这样在读取对象的时候会发生StreamCorrupedException异常。