存储两次序列化对象,读取报错问题
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));