import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class ClassObjectIODemo
{
    public static void main(String[] args)
    {
        ObjectOutputStream outputStream = null;
        String fileName = "species.records";
        try
        {
            outputStream = new ObjectOutputStream(
                           new FileOutputStream(fileName));
        }
        catch(IOException e)
        {
            System.out.println("Error opening output file " +
                                fileName + ".");
            System.exit(0);
        }
        Species califCondor = 
                    new Species("Calif. Condor", 27, 0.02);
        Species blackRhino = 
                    new Species("Black Rhino", 100, 1.0);
        try
        {
            outputStream.writeObject(califCondor);
            outputStream.writeObject(blackRhino);
            outputStream.close( );
        }
        catch(IOException e)
        {
            System.out.println("Error writing to file " +
                                fileName + ".");
            System.exit(0);
        }
        System.out.println("Records sent to file " + 
                            fileName + ".");
       System.out.println(
              "Now let's reopen the file and echo the records.");
        ObjectInputStream inputStream = null;
        try
        {
            inputStream = new ObjectInputStream(
                          new FileInputStream("species.records"));
        }
        catch(IOException e)
        {
            System.out.println("Error opening input file " +
                                fileName + ".");
            System.exit(0);
        }
        Species readOne = null, readTwo = null;
        try
        {
            readOne = (Species)inputStream.readObject( );
            readTwo = (Species)inputStream.readObject( );
            inputStream.close( );
        }
        catch(Exception e)
        {
            System.out.println("Error reading from file " +
                                fileName + ".");
            System.exit(0);
        }
        System.out.println("The following were read\n" +
                           "from the file " + fileName + ".");
        System.out.println(readOne);
        System.out.println( );
        System.out.println(readTwo);
        System.out.println("End of program.");
    }
}							