我写了2个对象到一个文件,但是当我尝试读取写入的对象时,它会在desrialize方法中引发异常。当我编写单个对象时它工作正常,但写入2个对象失败并在读取第二个对象时抛出异常。在读回多个对象时streamcorrupted异常
File_obj.Serialize_object(d, "/home/dasman/doc/serobj1.bin");
File_obj.Serialize_object(b, "/home/dasman/doc/serobj1.bin");
File_obj.deSerialize_object("/home/dasman/doc/serobj1.bin");
java.io.StreamCorruptedException: invalid type code: AC
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1373)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
at Testpackage.File_obj.deSerialize_object(File_obj.java:242)
at File_test.main(File_test.java:28)
的序列化方法和反序列化File_obj类在这里
public static void Serialize_object(Object obj,String filename){
File a = new File(filename);
ObjectOutputStream out = null;
try{
out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(a,true)));
}catch(IOException e){
e.printStackTrace();
}
try{
out.writeObject(obj);
out.close();
}catch(IOException e){
e.printStackTrace();
}
}
public static void deSerialize_object(String filename){
File a = new File(filename);
int objcount = 0;
ObjectInputStream in = null;
try{
in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(a)));
}catch(IOException e){
e.printStackTrace();
}
Serializable_test obj1 = null;
try{
while(true){
obj1 = (Serializable_test) in.readObject();
objcount++;
System.out.println("The object area is :" + obj1.get_area());
}
}catch(EOFException e){
System.out.println("END of object files reached objects read :" + objcount);
//in.close();
}catch(IOException e){
e.printStackTrace();
}catch(ClassNotFoundException e){
e.printStackTrace();
}
}
尽管在覆盖写入错误,波希米亚提供了一些关于如何解决这个问题的好建议。如果这些建议不适合你,我建议你发布[SSCCE](http://pscode.org/sscce.html)。 – 2011-06-04 22:49:00