tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
636
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    AvS AvS ist offline
    Registriert seit
    Mar 2002
    Ort
    borken|nrw
    Beiträge
    367
    Hi !

    Ich brauche für ein Programmierprojekt eine Datei, die Objekte eines bestimmten Typs persistent in einer Datei speichert und bei Programmstart diese Objekte wieder in eine HashSet speichert. Die Serialiserung funktioniert soweit, aber ich habe nun das Problem, dass bei der Deserialisierung nur ein Objekt eingelesen wird.

    Code java:
    1
    2
    3
    4
    5
    6
    
        public static void loadWL() throws IOException, ClassNotFoundException
        {
            FileInputStream fis = new FileInputStream("whitelist.txt");
            ObjectInputStream ois = new ObjectInputStream(fis);
            word.add(ois);
        }

    Gibt es für die Streams keine Möglichkeit alle Objekte in der Datei einzulesen ? So vielleicht ?
    Code java:
    1
    2
    
    while(ois.available())
    word.add(ois);
     
    cash rules everything around me

  2. #2
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Ich würde dir nicht empfehlen das ganze über Serialisierung zu lösen. Speichere deine Daten lieber in XML. Da bist du dann flexibler wenn sich die Klassenstruktur mal ändert.
     

  3. #3
    AvS AvS ist offline
    Registriert seit
    Mar 2002
    Ort
    borken|nrw
    Beiträge
    367
    Okay, hab ich zwar noch nie gemacht aber klingt vernünftig ! Welche Klassen benötige ich dafür ?

    Edit : Ich denke mal XMLDecoder und XMLEncoder
    Geändert von AvS (27.04.09 um 11:23 Uhr)
     
    cash rules everything around me

  4. #4
    AvS AvS ist offline
    Registriert seit
    Mar 2002
    Ort
    borken|nrw
    Beiträge
    367
    Sorry für Doppelposting, aber ein append = true über den FileOutputStream ist für XML-Dateien anscheined nicht mögich, richtig ?
     
    cash rules everything around me

  5. #5
    Avatar von hammet
    hammet hammet ist offline himekishi
    Registriert seit
    Aug 2006
    Ort
    Bayern
    Beiträge
    334
    Also wenn es um XML mit JAva geht, kann ich dir jdom und/oder dom4j empfehlen.
     
    Handlanger des Dr. Ex1tus

    Ich kenne Matzes dunkles Geheimnis ! oO

    o
    L_/
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat.

    Hallo Nuray!

  6. #6
    AvS AvS ist offline
    Registriert seit
    Mar 2002
    Ort
    borken|nrw
    Beiträge
    367
    Es geht nicht zwingend um XML. Ich brauche einen Weg um Objekte mit lediglich zwei Attributen (beides Strings) so abzuspeichern, dass die Daten erstens persistent sind und zweitens beliebig erweitert werden können. Ich hatte angefangen mit ObjectOutputStream, da hat die Deserialisierung in ein HashSet aber nicht so funktioniert wie ich das wollte. Daraufhin habe ich diesen Thread eröffnet und bin nun mit XML dran. Der XMLEncoder überschreibt aber immer die vorherige XML-Datei, was nicht akzeptabel für mich ist.
     
    cash rules everything around me

  7. #7
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Es geht nicht um einfaches XML sondern um Speichern/Laden von Objekten in/nach XML. Dafür eignene sich Objektmappingframeworks wie XStream.
     

  8. #8
    AvS AvS ist offline
    Registriert seit
    Mar 2002
    Ort
    borken|nrw
    Beiträge
    367
    Code java:
    1
    2
    3
    
    FileOutputStream fos = new FileOutputStream("whitelist.ser.xml", true);
    XStream xs = new XStream();
    xs.toXML(this, fos);

    Funktioniert leider auch nicht.
    Ich verzweifle langsam...Gibt es keine gescheite Möglichkeit, um Objekte in einer Datei zu speichern, die auch später noch erweitert werden kann ?
     
    cash rules everything around me

  9. #9
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Du kannst ein XML nicht sinnvoll erweitern. Du hast ja Start und EndTags.

    Aber du kannst die alte Datei wieder Laden, die Daten hinzufügen und wieder speichern.
     

Ähnliche Themen

  1. Deserialisierung mehrerer Objekte (Shapes)
    Von Hansguck im Forum Java
    Antworten: 5
    Letzter Beitrag: 12.12.07, 22:19
  2. Deserialisierung anzeigen
    Von The_Answer1985 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 10
    Letzter Beitrag: 12.06.07, 10:17
  3. Set/HashSet
    Von truejojo im Forum Java
    Antworten: 1
    Letzter Beitrag: 20.05.07, 11:35
  4. Deserialisierung im Konstruktor
    Von Mircot im Forum .NET Archiv
    Antworten: 16
    Letzter Beitrag: 14.07.05, 16:47
  5. hashSet
    Von yidaki im Forum Java
    Antworten: 3
    Letzter Beitrag: 08.07.04, 14:47