Ich schreibe ein Programm in Java, das eine Reihe von Nachschülerklubs anzeigt (E.G. Football, Hockey - vom Benutzer eingegeben). Die Clubs hinzugefügt werden in den folgenden ArrayList
:Java - Wie kann ich meine ArrayList in eine Datei schreiben und diese Datei in die ursprüngliche ArrayList laden (laden)?
private ArrayList<Club> clubs = new ArrayList<Club>();
Durch die followng Methode:
public void addClub(String clubName) {
Club club = findClub(clubName);
if (club == null)
clubs.add(new Club(clubName));
}
'Club' ist eine Klasse mit einem Konstruktor - Name:
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..
}
Meine Programm funktioniert - es lässt mich ein neues Club-Objekt in meine Arraylist hinzufügen, ich kann die Arraylist, und ich kann löschen, was ich will etc.
Allerdings möchte ich jetzt diese ArrayList (Vereine) in eine Datei speichern, und dann möchte ich in der Lage sein, die Datei später zu laden und die gleiche Arraylist ist wieder da.
Ich habe zwei Methoden dafür (siehe unten), und habe versucht, es funktioniert zu bekommen, aber havent hatte jeden luck, jede Hilfe oder Beratung wäre willkommen.
Methode speichern (Dateiname durch den Benutzer ausgewählt wird)
public void save(String fileName) throws FileNotFoundException {
String tmp = clubs.toString();
PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
pw.write(tmp);
pw.close();
}
Load-Methode (Aktuelle Code wird nicht ausgeführt - Datei ein String ist, aber im Club sein muss
public void load(String fileName) throws FileNotFoundException {
FileInputStream fileIn = new FileInputStream(fileName);
Scanner scan = new Scanner(fileIn);
String loadedClubs = scan.next();
clubs.add(loadedClubs);
}
ich auch verwende? GUI, um die Anwendung zu starten, und im Moment kann ich auf meine Speichern Schaltfläche klicken, die es mir erlaubt, einen Namen und einen Speicherort einzugeben und zu speichern. Die Datei erscheint und kann im Editor geöffnet werden, wird aber als Club @ c5d8jdj angezeigt. für jeden Club in meiner Liste)
Was Sie sehen 'Club @ c5d8jdj' ist das Ergebnis der Methode 'toString()' der Object-Klasse. Wie möchten Sie, dass die Liste in der Datei gespeichert wird? Welches Format? –
toString() ist nicht zum Schreiben in eine Datei geeignet. Sie möchten Serialisierung. – Aurand
Wenn Sie dies auf diese Weise tun möchten, müssen Sie die toString() -Methode der Klasse Club() überschreiben, sodass sie alle Informationen enthält, und dann einen Konstruktor, der das Objekt neu erstellen kann. Oder werfen Sie einen Blick auf Serializable-Schnittstelle und ObjectStreams: http://docs.oracle.com/javase/tutorial/essential/io/objectstreams.html – NeplatnyUdaj