tach zusammen,
mein problem ist das ich eine liste mit einem ObjectOutputStream speichern will und beim start meines programms muß diese liste wieder geladen werden. nur das funktioniert nicht und ich hab keine ahnung mehr warum es nicht funktioniert. hier der Code dazu.
Meine MainKlasse
Hier meine Klasse in der die Liste verwaltet wird
hier meine klasse zum speichern
vielleicht kann mir ja jemand helfen. im voraus schon mal vielen dank.
greetz wicky
ps:entschuldigt das mit dem einrücken. mach ich normal ganz sauber aber wenn ich das hier rein paste zerreißt es mir den kompletten code war so schon fett arbeit.
mein problem ist das ich eine liste mit einem ObjectOutputStream speichern will und beim start meines programms muß diese liste wieder geladen werden. nur das funktioniert nicht und ich hab keine ahnung mehr warum es nicht funktioniert. hier der Code dazu.
Meine MainKlasse
Code:
public class ShoppingMain {
public static void main(String[] args) {
int eingabeInt = 0;
String filename = "c:/streams/test.dat";
ShoppingListeSpeichern speichern = new ShoppingListeSpeichern();
ShoppingEingabe eingabe = new ShoppingEingabe();
ShoppingListNeu liste = new ShoppingListNeu();
try{
liste.arrayListe = speichern.deserialize(filename);
}
catch(Exception e) {
System.out.println("Noch keine Liste zum laden Vorhanden!");
} finally {
liste = new ShoppingListNeu();
}
System.out.println("Was wollen sie tun?");
System.out.println("~~~~~~~~~~~~~~~~~~~");
System.out.println();
System.out.println("(1) Einen Artikel hinzufügen");
System.out.println("(2) löschen mit index");
System.out.println("(3) löschen mit Artikelname");
System.out.println("(4) alle anzeigen");
System.out.println("(5) speichern");
System.out.println();
System.out.println("(9) beenden");
do {
System.out.println();
System.out.print("bitte wählen: ");
eingabeInt = eingabe.leseIntVonEingabe();
switch (eingabeInt) {
case 1:
System.out.println("Bitte geben Sie Artikel und Menge ein.");
System.out.print("Artikel:");
ShoppingElement shoppingElement = new ShoppingElement();
shoppingElement.setArtikelname( eingabe.leseZeileVonEingabe() );
System.out.println();
System.out.print("Menge:");
shoppingElement.setMenge ( eingabe.leseIntVonEingabe());
System.out.println();
liste.artikelInListeAufnehmen(shoppingElement);
System.out.println("Artikel wurde in Liste aufgenommen.");
break;
case 2:
System.out.println("Bitte die Zahl des zu löschenden
Artikels eingeben");
int elementLoeschen = eingabe.leseIntVonEingabe();
liste.artikelAusListeLoeschen(elementLoeschen);
System.out.println("Eintrag an Stelle " + elementLoeschen
+ " gelöscht" );
break;
case 3:
System.out.println("Bitte den zu löschenden Artikel korekt
geschrieben eintragen");
String stringEllement = eingabe.leseZeileVonEingabe();
liste.artikelAusListeLoeschen(stringEllement);
System.out.println("Es wurde der Artikel " + stringEllement
+ " gelöscht" );
break;
case 4: ShoppingElement[] alleEllemente =
new ShoppingElement[liste.getArtikelAnzahl()];
alleEllemente = liste.alleArtikelZurueckgeben();
for (int i = 0; i < liste.getArtikelAnzahl(); i++) {
ShoppingElement aktuellesShoppingElement = alleEllemente[i];
System.out.println( i + 1 + "/" + "Artikel: "
+ aktuellesShoppingElement.getArtikelName() + " - "
+ "Menge: " + aktuellesShoppingElement.getMenge());
}
break;
case 5:
speichern.serialize(filename);
System.out.println("Die Liste wurde gespeichert.");
break;
case 9:
System.out.println(" beenden");
break;
case -1:
System.out.println("Bitte korrekte Zahl eingeben!");
break;
default:
System.out.println("Menuezahl nicht vorhanden! Bitte korrekt eingeben!");
break;
}
}
while ( eingabeInt != 9);
}
}
Hier meine Klasse in der die Liste verwaltet wird
Code:
public class ShoppingListNeu {
public ArrayList arrayListe = new ArrayList();
public void artikelInListeAufnehmen(ShoppingElement gelesenesElement) {
arrayListe.add(gelesenesElement);
}
public void artikelAusListeLoeschen(String element) {
for (int i = 0; i < getArtikelAnzahl(); i++){
ShoppingElement shoppingElement = (ShoppingElement)
arrayListe.get(i);
if (element.equals( shoppingElement.getArtikelName() ) ) {
arrayListe.remove(i);
}
}
}
public void artikelAusListeLoeschen( int index){
arrayListe.remove( index);
}
public ShoppingElement[] alleArtikelZurueckgeben() {
ShoppingElement[] alleElemente = new ShoppingElement[arrayListe.size()];
arrayListe.toArray(alleElemente);
return alleElemente;
}
public int getArtikelAnzahl() {
int artikelAnzahl = arrayListe.size();
return artikelAnzahl;
}
}
hier meine klasse zum speichern
Code:
public class ShoppingListeSpeichern {
ShoppingListNeu liste = new ShoppingListNeu();
public void serialize( String filename )
{
try
{
FileOutputStream file = new FileOutputStream( filename );
ObjectOutputStream outPut = new ObjectOutputStream( file );
outPut.writeObject( liste.arrayListe );
outPut.close();
}
catch ( IOException e ) { System.err.println( e ); }
}
public ArrayList deserialize( String filename ) throws Exception
{
ArrayList alleElemente = null;
try
{
FileInputStream file = new FileInputStream( filename );
ObjectInputStream inPut = new ObjectInputStream( file );
alleElemente = (ArrayList) inPut.readObject();
inPut.close();
}
catch ( IOException e ) { throw new Exception( e ); }
catch ( ClassNotFoundException e ) { throw new Exception( e ); }
return alleElemente;
}
}
vielleicht kann mir ja jemand helfen. im voraus schon mal vielen dank.
greetz wicky
ps:entschuldigt das mit dem einrücken. mach ich normal ganz sauber aber wenn ich das hier rein paste zerreißt es mir den kompletten code war so schon fett arbeit.