Veramente tu scrivi gia' un prodotto, quindi la scrittura e' ok. Hai solo quei due parametri e quindi ti salva ovviamente quei due parametri. Nel codice che hai postato leggi un solo prodotto, quindi giustamente ti visualizza il primo e solo quello.
Cmq io sposterei i metodi per leggere/scrivere file in una classe apposita.
Fai un metodo Scrivi che prende in input un array/lista/qualsiasiCosaTiPare, la scorre e salva su file ogni oggetto e un metodo Leggi che legge tutto il file e restituisce un array/lista/qualsiasiCosaTiPare di prodotti. I metodi andranno chiamati leggi all'apertura del programma e scrivi alla chiusura.
Finche' il programma e' a runTime io non starei a scrivere e leggere da file ogni volta.
Esempio lettura di piu' oggetti.
codice:
ArrayList prodotti = new ArrayList();
FileInputStream input = null;
try {
   input = new ObjectInputStream(new FileInputStream("Prodotti.dat"));
   Prodotto p;
   while (true) {
      p = (Prodotto) reader.readObject();
      prodotti.add(obj);
   }   
} catch (IOException e1) {
   e.printStackTrace();
} catch (EOFException e2) {//SONO ALLA FINE DEL FILE, MI SERVE PER FERMARE IL WHILE}
input.close();