How can I append to an existing java.io.ObjectStream?
append, java, objectinputstream, serialization
Solution
It is actually pretty easy to do. When you are adding to an existing stream you need to use a subclass of ObjectOutStream that overrides `writeStreamHeader` so that a second header is not written in the middle of the file. For example
class NoHeaderObjectOutputStream extends ObjectOutputStream {
public NoHeaderObjectOutputStream(OutputStream os) {
super(os);
}
protected void writeStreamHeader() {}
}
Then just use a standard ObjectInputStream to read the whole file.
Problem
As for now I will get `java.io.StreamCorruptedException` when I try to append an Object. I have searched the Internet for a way to overcome that. The answer I found so far is it can't be done. A way around this problem is to write the objects into a list and then write the list to the file. But I have to overwrite that file everytime when I add new objects. It seems not to be the optimal solution in overtime. Is there a way to append objects to an existing object stream?