Sto scrivendo un programma in Java che visualizza una gamma di club doposcuola (E.G. Calcio, Hockey - inserito dall'utente). I club sono aggiunti nelle seguenti ArrayList
:Java - Come posso scrivere il mio ArrayList su un file e leggere (caricare) quel file sull'ArrayList originale?
private ArrayList<Club> clubs = new ArrayList<Club>();
con il metodo followng:
public void addClub(String clubName) {
Club club = findClub(clubName);
if (club == null)
clubs.add(new Club(clubName));
}
'Club' è una classe con un costruttore - nome:
public class Club {
private String name;
public Club(String name) {
this.name = name;
}
//There are more methods in my program but don't affect my query..
}
mio il programma sta funzionando - mi permette di aggiungere un nuovo oggetto Club al mio arraylist, posso visualizzare l'arraylist e posso cancellare qualsiasi cosa voglio ecc.
Tuttavia, ora voglio salvare quell'arrayList (bastoni) in un file, e poi voglio essere in grado di caricare il file più tardi e lo stesso arraylist è di nuovo lì.
Ho due metodi per questo (vedi sotto), e ho cercato di farlo funzionare, ma non ha avuto nulla, qualsiasi aiuto o consiglio sarebbe apprezzato.
metodo di salvataggio (nome del file è scelto dall'utente)
public void save(String fileName) throws FileNotFoundException {
String tmp = clubs.toString();
PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
pw.write(tmp);
pw.close();
}
metodo Load (codice corrente solito gestito - File è una stringa, ma ha bisogno di essere Club
public void load(String fileName) throws FileNotFoundException {
FileInputStream fileIn = new FileInputStream(fileName);
Scanner scan = new Scanner(fileIn);
String loadedClubs = scan.next();
clubs.add(loadedClubs);
}
Sono anche utilizzando un? GUI per eseguire l'applicazione, e al momento, posso fare clic sul mio pulsante Salva che poi mi permette di digitare un nome e posizione e salvarlo.Il file appare e può essere aperto in Blocco note ma visualizza come qualcosa come Club @ c5d8jdj (per ogni Club nella mia lista)
.210
Quello che si vede 'Club @ c5d8jdj' è il risultato del metodo' 'toString()' della classe Object. Come vorresti che la lista venisse salvata nel file? Quale formato? –
toString() non è adatto per la scrittura su file. Vuoi la serializzazione. – Aurand
Se si desidera eseguire questa operazione, è necessario sovrascrivere il metodo toString() della classe Club() in modo che contenga tutte le informazioni e quindi un Costruttore, che sia in grado di ricreare l'oggetto. Oppure dai un'occhiata all'interfaccia Serializable e ObjectStreams: http://docs.oracle.com/javase/tutorial/essential/io/objectstreams.html – NeplatnyUdaj