An ObjectInputStream deserializes primitive data and objects previously
written using an ObjectOutputStream.
ObjectOutputStream and ObjectInputStream can provide an application with
persistent storage for graphs of objects when used with a FileOutputStream
and FileInputStream respectively.