Q:

How to serialize on to existing file? 

Let say I have a file that contains a serialized object by BinaryFomatter.  Now I want to be able to serialize another object and APPEND this on that existing file. 
How can I do it? 

A:

This is indeed possible.   The code below appends the object. 
using (var fileStream = new FileStream("C:\file.dat", FileMode. Append))
{
    var bFormatter = new BinaryFormatter();
    bFormatter. Serialize(fileStream, objectToSerialize);
}

The following code de-serializes the objects. 
var list = new List<ObjectToSerialize>();    

using (var fileStream = new FileStream("C:\file.dat", FileMode. Open))
{
    var bFormatter = new BinaryFormatter();
    while (fileStream. Position ! = fileStream. Length)
    {
         list. Add((ObjectToSerialize)bFormatter. Deserialize(fileStream));
    }
}

Note for this to work the file must only contain the same objects. 

A:

Put your objects into a collection object and serialize like that.  If you'd manage to append a binary representation of an object at the end of an existing file you'd get problems reading it back. 

A:

Actually, if you just open the stream for writing, and positioning the pointer at the end of the stream, you can serialize another object and it will be appended to the existing stream. 
Deserializing will also read past the object, but not further. 
Obviously, if you want random access to your objects (deserialize object nr.  17, but not everything before it), then you need an index of the positions where each object starts, but if you just want to read all objects from the start, you can just serialize them out after each other.