Secondo me il punto è qui. ff potrebbe essere nullo (ma non lo sapremo mai perchè il codice che hai postato non è sufficiente a capirlo).Originariamente inviato da fleeaaa
per maggiore chiarezza :
ff chiama la classe dove c'è la finestra di dialogo(al suo interno ci sono textfield e button salva)
mm è la classe che contiene il model, cioè tutti i metodi.
Alcune considerazioni:
1) Tieni separati i vari wrapper di scrittura su file
2) Il trattamento delle eccezioni, fallo tutto nel metodo di salvataggio
3) Usa la clausola finally per evitare di lasciare aperti i file in caso di eccezioni
4) Usa il metodo flush() per assicurarti che la scrittura venga effettivamente fatta.
Qui sotto è come dovrebbero essere fatte le cose per avere maggiori garanzie di corretta scrittura:
I due oggetti (PrintStream e FileOutputStream) vengono creati separatamente, così hai un maggiore controllo nell'eventuale caso di eccezione in crerazione di uno dei due.codice:PrintStream ps = null; FileOutputStream fos = null; try { fos = new FileOutputStream("prenota.txt"); ps = new PrintStream( fos ); ps.println(ff.getMatr().getText()+","ff.getPass().getText()+","ff.getfo().getItemListener(); ps.flush(); } catch (Exception e) { e.printStackTrace(); } finally { if (ps != null) { try { ps.close(); } catch (Exception e) { } } else { if (fos != null) { try { fos.close(); } catch (Exception e) { } } } }
All'interno del blocco try viene fatta la scrittura e il flush. La chiusura degli stream viene relegata al blocco finally, così essa viene garantita anche in caso di eccezione.
PS: usa i tag CODE per il codice, come ho fatto io per mantenere indentazione e formattazione.



Rispondi quotando