File Input Output Java

import java.io.IOException;
import java.io.RandomAccessFile;
public class CreateEmployeeFile {
  public static void main(String[] args) throws Exception {
    String[] fnames = { "A", "B", "C" };
    String[] lnames = { "a", "b", "c" };
    String[] addresses = { "Box 100", "55 Street", "6 Lane" };
    byte[] ages = { 46, 59, 32 };
    double[] salaries = { 5.0, 6.0, 3.0 };
    RandomAccessFile raf = new RandomAccessFile("employee.dat", "rw");
    EmployeeRecord er = new EmployeeRecord();
    for (int i = 0; i < fnames.length; i++) {
      er.setFirstName(fnames[i]);
      er.setLastName(lnames[i]);
      er.setAddress(addresses[i]);
      er.setAge(ages[i]);
      er.setSalary(salaries[i]);
      er.write(raf);
    }
    raf = new RandomAccessFile("employee.dat", "rw");
    er = new EmployeeRecord();
    int numRecords = (int) raf.length() / er.size();
    for (int i = 0; i < numRecords; i++) {
      er.read(raf);
      System.out.print(er.getFirstName() + " ");
      System.out.print(er.getLastName() + " ");
      System.out.print(er.getAddress() + " ");
      System.out.print(er.getAge() + " ");
      System.out.println(er.getSalary());
    }
    raf.seek(0);
    for (int i = 0; i < numRecords; i++) {
      er.read(raf);
      if (er.getAge() >= 55) {
        er.setSalary(0.0);
        raf.seek(raf.getFilePointer() - er.size());
        er.write(raf);
        raf.seek(raf.getFilePointer() - er.size());
        er.read(raf);
      }
      System.out.print(er.getFirstName() + " ");
      System.out.print(er.getLastName() + " ");
      System.out.print(er.getAddress() + " ");
      System.out.print(er.getAge() + " ");
      System.out.println(er.getSalary());
    }
  }
}
class EmployeeRecord {
  private String lastName;
  private String firstName;
  private String address;
  private byte age;
  private double salary;
  void read(RandomAccessFile raf) throws IOException {
    char[] temp = new char[15];
    for (int i = 0; i < temp.length; i++)
      temp[i] = raf.readChar();
    lastName = new String(temp);
    temp = new char[15];
    for (int i = 0; i < temp.length; i++)
      temp[i] = raf.readChar();
    firstName = new String(temp);
    temp = new char[30];
    for (int i = 0; i < temp.length; i++)
      temp[i] = raf.readChar();
    address = new String(temp);
    age = raf.readByte();
    salary = raf.readDouble();
  }
  void write(RandomAccessFile raf) throws IOException {
    StringBuffer sb;
    if (lastName != null)
      sb = new StringBuffer(lastName);
    else
      sb = new StringBuffer();
    sb.setLength(15);
    raf.writeChars(sb.toString());
    if (firstName != null)
      sb = new StringBuffer(firstName);
    else
      sb = new StringBuffer();
    sb.setLength(15);
    raf.writeChars(sb.toString());
    if (address != null)
      sb = new StringBuffer(address);
    else
      sb = new StringBuffer();
    sb.setLength(30);
    raf.writeChars(sb.toString());
    raf.writeByte(age);
    raf.writeDouble(salary);
  }
  void setAge(byte age) {
    this.age = age;
  }
  byte getAge() {
    return age;
  }
  void setAddress(String address) {
    this.address = address;
  }
  String getAddress() {
    return address;
  }
  void setFirstName(String firstName) {
    this.firstName = firstName;
  }
  String getFirstName() {
    return firstName;
  }
  void setLastName(String lastName) {
    this.lastName = lastName;
  }
  String getLastName() {
    return lastName;
  }
  void setSalary(double salary) {
    this.salary = salary;
  }
  double getSalary() {
    return salary;
  }
  int size() {
    return 2 * (15 + 15 + 30) + 9;
  }
}