This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
ObjectInputStream.readObject does not return null on EOF, as your while loop expects. It throws an EOFException. Have a look at the API documentation for the particulars. I don't like relying on exceptions to signal something that is expected, like EOF so I usually store a bunch of objects in a collection of some sort and serialize that. Other folks will recommend first writing the number of objects to the stream, then writing the objects.