存储两次序列化对象,读取报错问题 java.io.StreamCorruptedException: invalid type code: A

来源:互联网 发布:淘宝网高档雪纺练功服 编辑:程序博客网 时间:2024/05/19 13:45

存储两次序列化对象,读取报错问题
java.io.StreamCorruptedException: invalid type code: A

原因:
对象序列化存储时,每次写入文件都会存放head头信息,每次写入的head信息不一致,所有读取head信息会报错

解决:
自己写 MyObjectInputStream/MyObjectOutputStream 类,分别继承ObjectInputStream和ObjectOutputStream,重写readStreamHeader()和writeStreamHeader()方法,直接return,不做任何处理

序列化类:

import java.io.IOException;import java.io.ObjectOutputStream;import java.io.OutputStream;public class MyObjectOutputStream extends ObjectOutputStream{    public MyObjectOutputStream(OutputStream out) throws IOException {        super(out);        // TODO Auto-generated constructor stub    }    @Override    protected void writeStreamHeader() throws IOException {        // TODO Auto-generated method stub        return;    }}

反序列化类:

import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;import java.io.StreamCorruptedException;public class MyObjectInputStream extends ObjectInputStream{    public MyObjectInputStream(InputStream in) throws IOException {        super(in);        // TODO Auto-generated constructor stub    }    @Override    protected void readStreamHeader() throws IOException,            StreamCorruptedException {        // TODO Auto-generated method stub        return;    }   }

把他们当 ObjectInputStream/ObjectOutputStream 使用就行

MyObjectInputStream mi = new MyObjectInputStream(new FileInputStream(file));
阅读全文
1 0