Mega Code Archive

 
Categories / Java / File Input Output
 

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