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();