implements Externalizable : ObjectOutputStream « File Input Output « Java






implements Externalizable

  

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());
  }
}

   
    
  








Related examples in the same category

1.new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(StringFileName)));
2.Create ObjectOutputStream out of FileOutputStream
3.Write different data types with ObjectOutputStream
4.A program that serializes and deserializes an Employee array
5.Writing objects to file with ObjectOutputStream
6.Serializing an Object (JButton)
7.Override writeObject(ObjectOutputStream oos) and readObject(ObjectInputStream ois)
8.Returns a byte array from the given object.