title: EOFException using random access files
body: <p>I'm using random access files to write a raf using an arrayList store. I do not know if it can be done, but I'm giving it a try because it is the best solution for me to create this application.  </p>
  
  <p>Here is the run-time error that I am getting:</p>
  
  <pre><code>Exception in thread "main" java.io.EOFException
  at java.io.RandomAccessFile.readChar(Unknown Source)
  at Student.read(Student.java:93)
  at MainApp.start(MainApp.java:60)
  at MainApp.main(MainApp.java:17)
  </code></pre>
  
  <p>And here is my code:</p>
  
  <pre><code>MainApp
      import java.io.BufferedReader;
      import java.io.BufferedWriter;
      import java.io.File;
      import java.io.FileNotFoundException;
      import java.io.FileReader;
      import java.io.FileWriter;
      import java.io.IOException;
      import java.io.PrintWriter;
      import java.io.RandomAccessFile;
  
  
  public class MainApp
  {
  
      public static void main(String[] args) throws Exception 
      {
          new MainApp().start();
  
      }
      public void start()throws Exception 
      {
          StudentStore details = new StudentStore();
          //Student a = new Student("Becky O'Brien", "DKIT26", "0876126944", "bexo@hotmail.com");
  
  
  
  
          //details.print();
  
  
  
           RandomAccessFile raf = new RandomAccessFile("ContactDetails.txt", "rw");
  
           Student a = new Student("Becky O'Brien", "DKIT26", "0876126944", "bexo@hotmail.com");
           Student b = new Student("Fabio Borini", "DKIT28", "0876136944", "fabioborini@gmail.com");
           Student c = new Student("Gaston Ramirez", "DKIT29", "0419834501", "gramirez@webmail.com");
           Student d = new Student("Luis Suarez", "DKIT7", "0868989878", "luissuarez@yahoo.com");
           Student e = new Student("Andy Carroll", "DKIT9", "0853456788", "carroll123@hotmail.com");
           details.add(a);
           details.add(b);
           details.add(c);
           details.add(d);
           details.add(e);
              for (int i = 0; i &lt; details.size(); i++) 
              {
                //a.setStudentName(a[i]);
                //a.setLastName(lnames[i]);
               // a.setAddress(addresses[i]);
               // a.setAge(ages[i]);
               // a.setSalary(salaries[i]);
                a.write(raf);
              }
              raf = new RandomAccessFile("employee.dat", "rw");
  
             // er = new Student();
  
              int numRecords = (int) raf.length() / details.size();
  
              for (int i = 0; i &lt; numRecords; i++) {
                a.read(raf);
  
                System.out.print(a.getStudentName() + " ");
                System.out.print(a.getStudentId() + " ");
                System.out.print(a.getStudentEmail() + " ");
                System.out.print(a.getStudentTelephoneNumber() + " ");
              }
              raf.seek(0);
              for (int i = 0; i &lt; numRecords; i++) 
              {
                a.read(raf);
                  raf.seek(raf.getFilePointer() - details.size());
                  a.write(raf);
                  raf.seek(raf.getFilePointer() - details.size());
                  a.read(raf);
                }
                System.out.print(a.getStudentName() + " ");
                System.out.print(a.getStudentId() + " ");
                System.out.print(a.getStudentEmail() + " ");
                System.out.print(a.getStudentTelephoneNumber() + " ");
              }
  
            }
  </code></pre>
  
  <p>Student</p>
  
  <pre><code>import java.io.IOException;
  import java.io.RandomAccessFile;
  
  
  public class Student 
  {
  //---------------------------------------------------------------------------
  //  Class Variables.
  //---------------------------------------------------------------------------   
      private String studentName;
      private String studentId;
      private String studentTelephoneNumber;
      private String studentEmail;
  //---------------------------------------------------------------------------
  //  Constructor.
  //---------------------------------------------------------------------------   
      public Student(String studentName, String studentId,String studentTelephoneNumber, String studentEmail) 
      {
          this.studentName = studentName;
          this.studentId = studentId;
          this.studentTelephoneNumber = studentTelephoneNumber;
          this.studentEmail = studentEmail;
      }
  //---------------------------------------------------------------------------
  //  Getters.
  //---------------------------------------------------------------------------
      public String getStudentName()
      {
          return studentName;
      }
      public String getStudentId() 
      {
          return studentId;
      }
      public String getStudentTelephoneNumber() 
      {
          return studentTelephoneNumber;
      }
      public String getStudentEmail() 
      {
          return studentEmail;
      }
  //---------------------------------------------------------------------------
  //  Setters.
  //---------------------------------------------------------------------------
      public void setStudentName(String studentName) 
      {
          this.studentName = studentName;
      }
      public void setStudentId(String studentId) 
      {
          this.studentId = studentId;
      }
      public void setStudentTelephoneNumber(String studentTelephoneNumber) 
      {
          this.studentTelephoneNumber = studentTelephoneNumber;
      }
      public void setStudentEmail(String studentEmail) 
      {
          this.studentEmail = studentEmail;
      }
  //---------------------------------------------------------------------------
  //  toString.
  //---------------------------------------------------------------------------
      public String toString() 
      {
          return "---------------------------Student--------------------------- " +
                  "\nStudent Name:" + studentName + 
                  "\nStudent Id:"+ studentId + 
                  "\nStudent Telephone Number:"+ studentTelephoneNumber + 
                  "\nStudent Email:" + studentEmail;
      }
      void read(RandomAccessFile raf) throws IOException 
      {
          char[] temp = new char[15];
          for (int i = 0; i &lt; temp.length; i++)
            temp[i] = raf.readChar();
          studentName = new String(temp);
          temp = new char[15];
          for (int i = 0; i &lt; temp.length; i++)
            temp[i] = raf.readChar();
          studentId = new String(temp);
          temp = new char[30];
          for (int i = 0; i &lt; temp.length; i++)
            temp[i] = raf.readChar();
          studentEmail = new String(temp);
          temp = new char[30];
          for (int i = 0; i &lt; temp.length; i++)
                temp[i] = raf.readChar();
          studentTelephoneNumber = new String(temp);
          temp = new char[30];
          for (int i = 0; i &lt; temp.length; i++)
                temp[i] = raf.readChar();
        }
  
        void write(RandomAccessFile raf) throws IOException 
        {
          StringBuffer sb;
          if (studentName != null)
            sb = new StringBuffer(studentName);
          else
            sb = new StringBuffer();
  
          sb.setLength(15);
          raf.writeChars(sb.toString());
  
          if (studentId != null)
            sb = new StringBuffer(studentId);
          else
            sb = new StringBuffer();
  
          sb.setLength(15);
          raf.writeChars(sb.toString());
  
          if (studentEmail != null)
            sb = new StringBuffer(studentEmail);
          else
            sb = new StringBuffer();
  
          sb.setLength(30);
          raf.writeChars(sb.toString());
          if (studentTelephoneNumber != null)
                sb = new StringBuffer(studentTelephoneNumber);
              else
                sb = new StringBuffer();
  
              sb.setLength(30);
              raf.writeChars(sb.toString());
  
        }
  
  
  
  }
  </code></pre>