在序列化写入对象的时候没有任何的问题!但是在读入的时候发生StreamCorruptedException,我是在一个文件中保存多个对象,为什么会发生这种错误呢?   
我查了资料,它说:可以构造一个 ObjectOutputStream的子类,并覆盖writeStreamHeader()方法.被覆盖后的writeStreamHeader()方法应判断是否为首次向文件中写入object,如果是?则调用super.writeStreamHeader();若否,即以追加方式写入object时, 则应调用ObjectOutputStream.reset()方法.  但是怎么来写这个方法呢  

解决方案 »

  1.   

    writeStreamHeader();方法我没有研究过,但是推荐自己实现序列化来保存对象,使用ObjectOutputStream有一些缺点,最明显的就是数据不兼容,一旦class数据有变动,则原来保存的数据都不可用了,所以,使用自定义序列化不但解决了你的问题,兼容性方面也有提升
      

  2.   

    读取的时候有没有readStreamHeader(),readStreamHeader也是需要复写的吧
      

  3.   

    我没有重写readStreamHeader()啊
    这个也要重写吗?
      

  4.   

    package stream;import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectOutputStream;public class MyObjectOutputStream extends ObjectOutputStream{
    public MyObjectOutputStream(FileOutputStream fout) throws IOException{
    super(fout);

    }
    public void writeStreamHeader(){
    try {
    this.reset();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    希望对你有帮助    
    这样就好了