You are doing the read part wrong
while(fis.read() != -1)
{
currentList = (ArrayList<HelpGroup>) ois.readObject();
}
the fis.read
is also reading from the stream, so that when you do ois.readObject()
you are not getting a complete object.
You should be able to simply do
currentList = (ArrayList<HelpGroup>) ois.readObject();
not in a loop.