I am writing to a stream file in Java. I have read if I want to append I need to override WriteStreamHeader. But even after doing so, I am not able to get free from StreamCorruptedException.
class AppendingObjectOutputStream extends ObjectOutputStream {
      public AppendingObjectOutputStream(OutputStream out) throws IOException            {
        super(out);
      }
      protected void writeStreamHeader() throws IOException {
        reset();
      }
}
class Student implements Operations,Serializable
{
    private static final long serialVersionUID = 1L;
    private int studid;
    private String sname;
    private int sage;
    private long contact;
    public Student()
    {
        studid = 0;
        sname = null;
        sage = 0;
        contact = 0;
    }
    public void add(Scanner sc)
    {
        System.out.print("Enter student id: ");
        studid = Integer.parseInt(sc.nextLine());
        System.out.print("Enter student name: ");
        sname = sc.nextLine();
        System.out.print("Enter student age: ");
        sage = Integer.parseInt(sc.nextLine());
        System.out.print("Enter student's contact number: ");
        contact=Long.parseLong(sc.nextLine());
    }
    public void show()
    {
        System.out.println("Student's details:");
        System.out.println("Id no: "+studid);
        System.out.println("Name :" + sname);
        System.out.println("Age :" + sage);
        System.out.println("Contact No. :" + contact);
    }
}
class Admin
{
    public void addstu(Scanner sc)
    {
        try
        {
            Student s = new Student();
            s.add(sc);
            boolean b = true;
            FileInputStream fis = null;
            try{
                fis = new FileInputStream("student.ser");
                fis.close();
            }
            catch (FileNotFoundException e)
            {
                b = false;
            }
            FileOutputStream fos = new FileOutputStream("student.ser");
            ObjectOutputStream oos =null;
            if(b == true)
            {   
                System.out.println("Appending objects");
                oos = new AppendingObjectOutputStream(fos);
            }
            else
            {
                System.out.println("Writing objects");
                oos = new ObjectOutputStream(fos);
            }
            oos.writeObject(s);
            oos.close();
            fos.close();
            System.out.println("Student successfully inserted");
            fis = new FileInputStream("student.ser");
            ObjectInputStream ois = new ObjectInputStream(fis);
            Student result = (Student) ois.readObject();
            result.show();
            ois.close();
            fis.close(); 
        }
        catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public void displayallstu() 
    {
        try
        {
            FileInputStream fis = new FileInputStream("student.ser");
            ObjectInputStream ois = new ObjectInputStream(fis);
            System.out.println("Student's List");
            try{
                while(true)
                {
                    Student result = (Student) ois.readObject();
                    result.show();
                }
            }
                 catch (EOFException e) {
                     System.out.println("!!End of file!!");
                    }
            finally{
            ois.close();
            fis.close();}
        }
        catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } 
         catch (ClassNotFoundException e) {
                e.printStackTrace();
            } 
    }
}
It is called from main and executes properly when addstu() is called for the first time, but when called for next time, displays Successfully Inserted message, but throws exception while reading.
java.io.StreamCorruptedException: invalid stream header: 79737200
 
    