Anzeige

Objekt in Textdatei etwas hinzufügen


#1
Hallo, ich versuche jetzt seit einigen Stunden,
mir zu erschließen wie man einem Objekt in einer Textdatei etwas hinzufügen kann..

Versuche mich erst seit kurzer Zeit an Java und bitte deshalb um Hilfe..

Java:
try {
                FileOutputStream out = new FileOutputStream ("intern_datastorage");
                ObjectOutput a = new ObjectOutputStream(out);
                   
                };
                ObjectOutputStream a = new ObjectOutputStream();
               
                List<Nameable> list1 = new ArrayList<Nameable>();
                list1.add(new Product(id, name));
               
               
                for(Object obj: list1) {
                    a.writeObject(obj);
                }
               
                a.flush();
                a.close();
               
            }catch(Exception e) {
                e.printStackTrace();
            }
Die Datei soll nicht überschrieben werden, sondern etwas hinzufügen das ist mein Ziel..
Hilfe würde mich freuen, danke im voraus an alle..

Gruß
Cubeyy
 

Bratkartoffel

gebratene Kartoffel
Premium-User
#2
Hi,

das funktioniert nicht so einfach. Du musst die Datei (die Liste) zuerst lesen, dann dein Element hinzufügen und komplett neu schreiben. Deine Liste ist nicht nur einfach eine Textdatei, sondern binäre Daten. Das Format hierfür ist nicht so einfach und du kannst nicht einfach was hinten dran hängen.

Ich möchte dich an der Stelle gerne darauf hinweisen, dass eine Objektserialisierung sehr gefährlich ist. Sobald sich dein Original-Objekt (Product) von der Signatur her ändert (serialVersionUid, Felder hinzu, Felder weg, Felder umbenennen) kannst du das Ding nicht mehr lesen / laden. Auch ein Java Update könnte dafür sorgen, dass du das Ding nicht mehr lesen kannst. Ausserdem gibt es mit der Serialisierung auch Sicherheitsprobleme. Greife für die Serialisierung auf etwas abstrakteres und "flexibleres" zurück, wie JSON oder XML.

Ausserdem fehlt bei dir ein close() im Exception-Block. Schlägt der write() fehl, so bleibt die Datei offen.

Grüsse,
BK
 
#5
Mh.. komme einfach nicht voran..

Code:
invalid type code: AC
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.readObject(Unknown Source)
 

Bratkartoffel

gebratene Kartoffel
Premium-User
#6
Hi,

wie sieht dein Code aktuell aus? Hast du es mit Jackson probiert?
Wie sieht der ganze Stacktrace mit der entsprechenden Funktion von dir aus?

Grüsse,
BK
 
Anzeige

Neue Beiträge

Anzeige