File Input Output Java

import java.io.Externalizable;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
class Engine implements Externalizable {
  private int numCylinders;
  public Engine() {
  }
  Engine(int numCylinders) {
    this.numCylinders = numCylinders;
  }
  int getNumCylinders() {
    return numCylinders;
  }
  public void readExternal(ObjectInput in) throws IOException, ClassCastException {
    System.out.println("READ-Engine");
    numCylinders = in.readInt();
  }
  public void writeExternal(ObjectOutput out) throws IOException {
    System.out.println("WRITE-Engine");
    out.writeInt(numCylinders);
  }
}
class Car implements Externalizable {
  private int numTires;
  private Engine e;
  private String name;
  public Car() {
  }
  Car(String name, int numTires, Engine e) {
    this.name = name;
    this.numTires = numTires;
    this.e = e;
  }
  int getNumTires() {
    return numTires;
  }
  Engine getEngine() {
    return e;
  }
  String getName() {
    return name;
  }
  public void readExternal(ObjectInput in) throws IOException, ClassCastException {
    System.out.println("READ-Car");
    numTires = in.readInt();
    name = in.readUTF();
    try {
      e = (Engine) in.readObject();
    } catch (ClassNotFoundException e) {
    }
  }
  public void writeExternal(ObjectOutput out) throws IOException {
    System.out.println("WRITE-Car");
    out.writeInt(numTires);
    out.writeUTF(name);
    out.writeObject(e);
  }
}
class EDemo {
  public static void main(String[] args) throws Exception {
    Car c1 = new Car("Some car", 4, new Engine(6));
    ObjectOutputStream oos = null;
    FileOutputStream fos = new FileOutputStream("car.ser");
    oos = new ObjectOutputStream(fos);
    oos.writeObject(c1);
    ObjectInputStream ois = null;
    FileInputStream fis = new FileInputStream("car.ser");
    ois = new ObjectInputStream(fis);
    Car c2 = (Car) ois.readObject();
    System.out.println("Number of tires = " + c2.getNumTires());
    System.out.println("Number of cylinders = " + c2.getEngine().getNumCylinders());
    System.out.println("Name = " + c2.getName());
  }
}