Just a thought, instead of writing each object after serializing one by one to the file, why don't you just serialize the entire ArrayList and write it to a file. And when you need to add any data to the file, get the ArrayList back from the file, add the object to the ArrayList and serialize this ArrayList overwrite the file with the older file.
//... necessary imports public class ArrayList<T> extends List<T> implements Collection<T>, Serializable{ private transient Object[] elements = null; // key point @_@ public T get(int position){ return (T)elements[position]; }}