Giuso ha scritto:
Premesso che questa scrittura su file mi va più che bene dato che ottengo ciò che è richiesto
In realtà no, non va affatto bene! E ti dico subito perché, per almeno 2 motivi.
1) Il toString() degli oggetti AppuntamentoContatto potresti usarlo anche per altri scopi: per stampare la descrizione dell'oggetto sulla console durante la gestione o anche per altri motivi che potrebbero essere banalmente per logging e/o debugging.
Ma se usi il toString() anche per il file, il formato fornito dal toString() diventa sostanzialmente una "specifica", uno standard, che dovrai sempre rispettare. E quindi non lo potrai mai più cambiare per gli altri scopi ... a meno che vai anche a modificare la logica di lettura e parsing del file. Ma un file già scritto non lo rileggeresti.
2) Se scrivi su file gli appuntamenti così, ciascuno con il contatto referenziato, hai la ripetizione dei dati del contatto. Se inizialmente in memoria avevi 10 oggetti AppuntamentoContatto che facevano riferimento
ad uno stesso oggetto Contatto, poi quando rileggi cosa ottieni? 10 oggetti Contatto DISTINTI ma con gli stessi dati? E come gestisci poi le modifiche sul contatto in modo coerente?? Diventa un pasticcio.
Te l'ho detto prima, dovresti mantenere la IDENTITÀ degli oggetti Contatto.
Giuso ha scritto:
mi chiedevo come poter modificare quel metodo per stampare in un formato un po' più leggibile
Anche questo l'ho detto prima: un file di DATI non necessariamente deve essere completamente "parlante" ed intelleggibile. O forse vuoi che un utente possa usare Notepad (o altro) per editare il documento?
Più metti diciture fisse, intestazioni ecc... più diventa critico fare il parsing e le dovute validazioni sul formato. Se anche fosse molto intelleggibile da un utente "umano", se lo edita a mano con un editor e NON ha le idee chiare sul formato generale, rischia di modificare il file in modo che non sia più leggibile dalla applicazione.
Giuso ha scritto:
Poi ho provato in tutti i modi a mettere uno "\n" per andare a capo sul file tra un appuntamento e l'altro, ma mi scrive tutto sulla stessa riga.
"\n" NON è la sequenza di newline su TUTTE le piattaforma. Lo è sui sistemi Unix-like ma non su Windows. Se vuoi scrivere il newline per la piattaforma su cui sta girando l'applicazione si può fare ... ma non buttando fuori "\n" e basta.
Giuso ha scritto:
posso fare la lettura da file in modo analogo alla scrittura con questo metodo?
La lettura generalmente è più onerosa, richiede possibilmente validazioni più o meno "robuste" per verificare se il file è "malformato" oppure no.
E quindi dipende anche molto dal formato del file.
Ascolta quello che ti si dice ..