File Input Output Java

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class Employee implements Serializable {
  private String name;
  private double salary;
  Employee(String name, double salary) {
    this.name = name;
    this.salary = salary;
  }
  String getName() {
    return name;
  }
  double getSalary() {
    return salary;
  }
  private void writeObject(ObjectOutputStream oos) throws IOException {
    oos.defaultWriteObject();
    System.out.println("Serializing Employee object\n");
  }
  private void readObject(ObjectInputStream ois) throws Exception {
    ois.defaultReadObject();
    salary += 100;
    System.out.println("Deserializing Employee object");
  }
}
class Main {
  public static void main(String[] args) throws Exception {
    Employee e1 = new Employee("A", 45000.0);
    System.out.println(e1.getName() + " " + e1.getSalary());
    FileOutputStream fos = new FileOutputStream("employee.ser");
    ObjectOutputStream  oos = new ObjectOutputStream(fos);
    oos.writeObject(e1);
    FileInputStream fis = new FileInputStream("employee.ser");
    ObjectInputStream  ois = new ObjectInputStream(fis);
    Employee e2 = (Employee) ois.readObject();
    System.out.println(e2.getName() + " " + e2.getSalary());
  }
}