Hi,
sitze hier nun seit mehreren Stunden und dicken Büchern, aber ich komme einfach nicht weiter. Beschreibe noch mal kurz alles.
Ich lese 20 Objekte der Klasse Disc ein und packe sie in die ArrayList liste.
Dann bau ich mir einen Namen zusammen und unter diesem Namen wird die Liste dann serialisiert. Also habe ich jetzt ein Object in meiner Liste namens Disc_1.ser. Das ist dann für immer verfügbar, funktioniert alles pima auch mit mehreren Objekten (Disc_2.ser) usw.
Nun ist mein einziges Problem, was ich noch habe, dass man einzellne Objekte vom Typ Disc ja auch mal ändern muss. Sei es einfaach nur, weil man sich verschrieben hat. So kurz was ich vor habe:
Möchte zB Disc_2.ser öffnen und zB das 4 Element in der Liste ändern. Hab das jetzt so gemacht. Erst hab ich das Element gelöscht (geht super) und dann wollte ich es mit der dieser Methode wieder neu einlesen und dann an den alten Platz speichern, dass geht leider nicht.
Das Element wird wie schon gesag einfach nur gelöscht und dass Objekt was ich mit reMake wieder erstelle wird nicht gespeichert.
Hoffe, ihr könnt mir helfen!!!
Danke!
sitze hier nun seit mehreren Stunden und dicken Büchern, aber ich komme einfach nicht weiter. Beschreibe noch mal kurz alles.
Ich lese 20 Objekte der Klasse Disc ein und packe sie in die ArrayList liste.
Code:
//...
public ArrayList liste = new ArrayList();
//...
try {
for(byte i = 1; i <= MAX_TRACK ; i++) {
System.out.println("Track : " + i);
System.out.print("Interpret: ");
String interpret = din.readLine();
System.out.print("Titel : ");
String titel = din.readLine();
System.out.print("Dauer : ");
String dauer = din.readLine();
System.out.println();
//Neues Object von Disc wird angelegt und in Liste gepseichert
Disc disc = new Disc(i, interpret, titel, dauer);
liste.add(disc);
}
//...
Dann bau ich mir einen Namen zusammen und unter diesem Namen wird die Liste dann serialisiert. Also habe ich jetzt ein Object in meiner Liste namens Disc_1.ser. Das ist dann für immer verfügbar, funktioniert alles pima auch mit mehreren Objekten (Disc_2.ser) usw.
Code:
//Liste wird serialisiert
try {
//Name für die List wird gebildet
String listname = "Disc_";
listname += String.valueOf(this.akMdnr);
listname += ".ser";
FileOutputStream fs = new FileOutputStream(listname);
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(liste);
os.close();
}
Nun ist mein einziges Problem, was ich noch habe, dass man einzellne Objekte vom Typ Disc ja auch mal ändern muss. Sei es einfaach nur, weil man sich verschrieben hat. So kurz was ich vor habe:
Möchte zB Disc_2.ser öffnen und zB das 4 Element in der Liste ändern. Hab das jetzt so gemacht. Erst hab ich das Element gelöscht (geht super) und dann wollte ich es mit der dieser Methode wieder neu einlesen und dann an den alten Platz speichern, dass geht leider nicht.
Code:
public void reMake(byte track, String listname) {
//Neues Objekt wird erstellt
try {
System.out.println("Track : " + track);
System.out.print("Interpret: ");
String interpret = din.readLine();
System.out.print("Titel : ");
String titel = din.readLine();
System.out.print("Dauer : ");
String dauer = din.readLine();
System.out.println();
//Neues Object von Disc wird angelegt und in Liste gespeichert
Disc newTrack = new Disc(track, interpret, titel, dauer);
liste.set((track - 1), newTrack);
//Liste wo eingefügt werden soll wird geöffnet
FileOutputStream fs = new FileOutputStream(listname);
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(liste);
os.close();
}
catch(IOException e) {
System.out.println("***Fehler beim Speichern***");
}
}
Das Element wird wie schon gesag einfach nur gelöscht und dass Objekt was ich mit reMake wieder erstelle wird nicht gespeichert.
Hoffe, ihr könnt mir helfen!!!
Danke!