Objekt in Datei erweitern

Status
Nicht offen für weitere Antworten.

space

Mitglied
Hallo Leute,

ich habe eine Datei, in der ich Objektinformationen speichere. Das Array hat 50 "Fächer". Speichere ich das Objekt ins Array 0 funktionierts, aber ins Array 1 nicht.

Code:
mensch_liste[1] = new Mensch(Name,Vorname,Alter,Geschlecht,Haarfarbe,Beruf,Adresse,Ort,Telefon);
             
                try {
                FileOutputStream mensch_dat = new FileOutputStream(datei);
                ObjectOutputStream mensch_in = new ObjectOutputStream(mensch_dat);

                mensch_in.writeObject(mensch_liste[1]); // 0 Funktioniert, 1 Aber nicht
                mensch_in.close();
                } catch (IOException u) {}
Beste Grüße
 

0x7F800000

Top Contributor
Das Array hat 50 "Fächer".
Normalerweise würde man "Länge 50" sagen... was hat's mit dem Problem zu tun?

Speichere ich das Objekt ins Array 0 funktionierts, aber ins Array 1 nicht.
soll der Satz irgendeinen Sinn ergeben, oder ist das deko, die man einfach überspringen soll? (betrifft auch den titel: what?!)

"Funktioniert nicht" ist keine Problembeschreibung. Wird da eine NotSerializableException geworfen oder was? Falls nichts zu sehen ist, dann ist eine IOException geworfen worden, die du aber mit dem bösartigen
Code:
catch(IOException exc){}
einfach unter den Teppich kehrst...

Genaue Fehlermeldung bitte.
 

space

Mitglied
Hallo, tut mir leid, wenn ich mich sehr unpräzise ausgedrückt habe.
Ich bekomme garkeine Fehlermeldung. In meinem Programm werden alle Objekte in einem Textfeld aufgelistet.
Das Objekt 0 wird problemlos aufgelistet, weil es in die Datei geschrieben wurde.
Nur Das Objekt 1 nicht, ohne eine Fehlermeldung.
 

Schandro

Top Contributor
dann benutzt einen Debugger oder einfach ein paar System.out.println's um zu sehen, ob das Object geladen wird. Wahrscheinlich liegt das Problem eher am anzeigen der Objects
 

0x7F800000

Top Contributor
In meinem Programm werden alle Objekte in einem Textfeld aufgelistet.
....das hat jetzt aber auch nicht mit dem eigentlichen Problem zu tun hoffe ich doch?
Bist du dir sicher, dass das Problem beim schreiben in die datei auftritt, und nicht sonstwo unterwegs zum Textfeld?
Das Objekt 0 wird problemlos aufgelistet, weil es in die Datei geschrieben wurde.
Nur Das Objekt 1 nicht, ohne eine Fehlermeldung.
Dann ersetze erstmal diese "catch-verschluck"-Konstruktion durch eine "catch-laber"-Konstruktion, nämlich:
Code:
...
}catch(XYZException e){
   e.printStackTrace();
}
Dann erscheint wenigstens was auf der Konsole, wenn es schief läuft... Ein Java Programm stürzt üblicherweise nicht einfach so ohne irgendwelche Meldungen ab...

Übrigens: wenn du für jedes weitere Objekt aus dem Array immer wieder neue FileOutputStreams aufmachst, wird die datei immer wieder überschrieben, das ist dir bekannt?
 

space

Mitglied
Übrigens: wenn du für jedes weitere Objekt aus dem Array immer wieder neue FileOutputStreams aufmachst, wird die datei immer wieder überschrieben, das ist dir bekannt?
Ups.., das wusste ich nicht:) Wie kann ich denn die Datei "weiterführen"?
Der Code steht nämlich im ActionListener.. für den Speichern Button. Das heißt, jedes Mal, wenn ich Speichern pushe, wird die Datei neu überschrieben?
 
Zuletzt bearbeitet:

0x7F800000

Top Contributor
Ups.., das wusste ich nicht:) Wie kann ich denn die Datei "weiterführen"?
Der Code steht nämlich im ActionListener.. für den Speichern Button. Das heißt, jedes Mal, wenn ich Speichern pushe, wird die Datei neu überschrieben?
in actionListenern sollte normalerweise sowieso ziemlich gar nichts stehen, außer einzelnen methodenaufrufen, irgendwelche speichervorgänge haben da nichts verloren. :noe:
Jedes mal wenn du den FileOutputStream so aufmachst, wird die datei neu überschrieben, wann das passiert kann außer dir ohne code niemand wissen...

Wenn du was dranhängen willst, dann sieh dir den anderen Konstruktor an:
http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileOutputStream.html#FileOutputStream(java.io.File,%20boolean)
aber pass auf dass du hier nicht einen fehler mit einem anderen zu fixen versuchst...
 

space

Mitglied
Jetzt habe ich den Konstruktor verwendet und bekomme den Fehler :(:

java.io.StreamCorruptedException: invalid type code: AC
at java.io_ObjectInputStream.readObject0(ObjectInputStream.java:1356)
at java.io_ObjectInputStream.readObject(ObjectInputStream.java:351)
at Personenakte.main(Personenakte.java:164)
 

Ebenius

Top Contributor
Andrey; an eine per ObjectOutputStream geschriebene Datei anhängen? :lol:

space, so geht das nicht. Was auch immer Du da tun willst: Verabschiede Dich gleich von ObjectIn-/-OutputStream. Diese Ströme sind zur Serialisierung da. Und Serialisierung ist kein Werkzeug um Persistenz zu erzeugen.

Mach Dir klar, wie die Daten aussehen, die Du wegschreiben möchtest. Oft ist XML eine gute Wahl, auch wenn der vermeintliche Einarbeitungsaufwand erstmal abschreckt. Oder ganz normale Textdateien, eine Zeile je Eintrag. Oder Properties-Dateien (key = value). Das hängt aber zuerst einmal davon ab, was Du abspeichern möchtest.

Ebenius
 

0x7F800000

Top Contributor
Jetzt habe ich den Konstruktor verwendet und bekomme den Fehler :(:

java.io.StreamCorruptedException: invalid type code: AC
at java.io_ObjectInputStream.readObject0(ObjectInputStream.java:1356)
at java.io_ObjectInputStream.readObject(ObjectInputStream.java:351)
at Personenakte.main(Personenakte.java:164)

Oh, bestens, du hast dich also doch nochmal drum bemüht, dir mit append=true in den Fuß zu schießen, tolle idee... :autsch: Ich sag's jetzt nochmal etwas deutlicher: das war lediglich eine allgemeine Bemerkung, die hier nicht unbedingt anwendung finden musste, außer du brauchst es wirklich (und höchstwahrscheinlich brauchst du das nicht)

Googlen? Nix gebracht? Hab hier nach 5 Minuten folgendes entdeckt:
Well, after investigating a lot, going thru many test, etc, i found the cause is really simple
ObjectInputStream does not accept appending objects on the last of the file xD!
if any one gets the same problem, stop appending, it wont work there
frown.gif

I thought on creating a vector, put every object in the file there, then add extraobjects to the end of the vector and finally write everything back
I got a problem with StreamCorruptedException, any ideas? - Java Forums

Also überleg dir noch drei mal, ob du wirklich irgendwas appenden musst, oder ob es reicht den "new FileOutputStream()"-Konstruktor an der richtigen stelle vor irgendeiner schleife aufzurufen... :autsch:

@Ebenius:
Andrey; an eine per ObjectOutputStream geschriebene Datei anhängen? :lol:
Ja, gut, die Tatsache dass ich damit selbst bisher nie auf die fresse gefallen bin mag zwar recht lächerlich erscheinen, aber irgendwie kann ich mir aus der Annahme der Existenz der leeren Menge nicht logisch herleiten, warum man nicht an einen Haufen serealisierter Objekte einen anderen Haufen serealisierter objekte dranhängen können sollte ???:L
 
Zuletzt bearbeitet:

Ebenius

Top Contributor
Ich sag's jetzt nochmal etwas deutlicher: das war led]iglich eine allgemeine Bemerkung, die hier nicht unbedingt anwendung finden musste, außer du brauchst es wirklich (und höchstwahrscheinlich brauchst du das nicht)
Ich ziehe mein Gelächter zurück. Du hast wirklich irgendwie darauf hingewiesen, dass es vielleicht nicht so gut ist. Ein klares "Nein!" hätte ich aber besser verstanden. :)

Ebenius
 

0x7F800000

Top Contributor
Ein klares "Nein!" hätte ich aber besser verstanden. :)
Nene, schon in Ordnung, hast ja recht... Zu einem klaren "Nein" fehlte mir der Mut, weil ich es selber nicht konkret wusste, sondern lediglich ein ungutes Gefühl hatte, als ob die sache ein wenig nach Kerosin riecht. (siehe edit oben) Jetzt weiß ich es genau.;)

Oft ist XML eine gute Wahl, auch wenn der vermeintliche Einarbeitungsaufwand erstmal abschreckt. Oder ganz normale Textdateien, eine Zeile je Eintrag.
Für abstrakte geometrische daten spricht aber immer noch nichts dagegen, diese in irgendeinem kryptischen von menschen nicht lesbaren format aus einzelnen bytes abzuspeichern, oder? Normal serealisieren ist aber nach wie vor blöd, weil da Java von alleine irgendwelche zusatzinformationen mitreinwebt? Ich dachte eigentlich Serealisierung wäre nur dazu da, Objekte über's netzwerk irgendwohin zu verschicken (und zwar an ein programm, dass garantiert genauso funktioniert) In etwa richtig? ???:L
 
Zuletzt bearbeitet:

space

Mitglied
Ziel ist ein kleines Programm, das Objekte und ihre Eigenschaften in Dateien speichert, die man aufrufen sowie ändern kann.
Wie sollte man die Objekte für dieses kleine Programm am besten speichern?
 

Ebenius

Top Contributor
Das ist eine Struktur mit Tiefe 1. Es kommen aus meiner Sicht in Frage:
  1. CSV-Datei, eine Zeile pro Person, kommagetrennte Einträge. Find ich nicht ganz so hübsch.
  2. XML-Datei, im einfachsten Fall mit ungefähr der Struktur: [Highlight=XML]<PersonenDaten>
    <Person>
    <Name>Ebenius</Name>
    <Wohnort>Mannheim</Wohnort>
    ...
    </Person>
    ...
    </PersonenDaten>[/Highlight]
Ebenius
 

Ebenius

Top Contributor
Seit Java 1.4 ist XML gut im Java SE dabei. Bei CSV musst Du viel selber machen (zum Beispiel Kommata quoten).

Ebenius
 

0x7F800000

Top Contributor
Für XML braucht man externe Bibliotheken und für CSV nicht oder?
Naja, in der standard API sind schon ~35 packages vorhanden, die mit "javax.xml" anfangen, das dürfte für den Anfang eigentlich reichen ;)
Hab gehört, dass JDOM auch recht gerne verwendet wird, frag mich jetzt aber nicht wo es da welche vorteile gibt, lässt sich alles in 15 minuten ergoogln, aber ich weiß es nicht mehr...

CSV wird dagegen eigenbau-frickelei, dies parsen das parsen, auf semikolons und doppelpunkte aufpassen und sonstwas...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Objekt mit String und Int aus TxT Datei erstellen Allgemeine Java-Themen 23
P Objekt Array in Datei Speichern Allgemeine Java-Themen 3
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
F Objekt einer Datei verschieben, aber Verzeichnispfad fehlt Allgemeine Java-Themen 6
A Iterationen einer XML-Datei in einem Objekt sichern Allgemeine Java-Themen 5
J Objekt in Datei speichern mittels Streams Allgemeine Java-Themen 6
N Lwjgl 3d Objekt wird schmaler, wenn es sich dreht Allgemeine Java-Themen 0
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
Maxi-JOO Klassen Dummy Objekt in anderen Constructor übergeben Allgemeine Java-Themen 5
el_niiinho13 Objekt auf der Konsole ausgeben lassen Allgemeine Java-Themen 8
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
A Objekt aus anderen Objekten machen Allgemeine Java-Themen 8
SaftigMelo In einem Winkel Objekt bewegen Allgemeine Java-Themen 2
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
H Objekt speichern und laden Allgemeine Java-Themen 1
H Objekt speichern und laden Allgemeine Java-Themen 1
J Objekt in Bytestream umwandeln Allgemeine Java-Themen 12
J Wie kann ich von Vornherrein einen Fokus auf ein Objekt entfernen? Allgemeine Java-Themen 3
J Information von getSource() Objekt auslesen Allgemeine Java-Themen 1
Drachenbauer Wie stelle ich fest, ob ein Objekt in meinem Array vorkommt? Allgemeine Java-Themen 5
S Variable als Objekt Name Allgemeine Java-Themen 3
D Input/Output Zwischen zwei ID-Räumen unterscheiden und Objekt löschen Allgemeine Java-Themen 16
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
T Objekt in Array packen Allgemeine Java-Themen 6
K Methodenaufruf mit String / String zu Objekt konvertieren Allgemeine Java-Themen 8
S Neues Objekt darstellen Allgemeine Java-Themen 4
J Best Practice Objekt an alle Klassen verteilen ( Discord Bot ) Allgemeine Java-Themen 7
D Objekt-Suche mit mehreren optionalen Parametern Allgemeine Java-Themen 6
M Klassen Objekt weiter geben Allgemeine Java-Themen 1
B Klassen Objekt erzeugen und Konstruktor aufrufen - Welche Lösung ist besser? Allgemeine Java-Themen 2
L Variablen Eigenes Objekt wie z.B. einen Integer zuweisen Allgemeine Java-Themen 3
D Konstruktor - jedes Objekt einzeln erzeugen - alternative? Allgemeine Java-Themen 8
S Applet Überprüfen ob ein Objekt angeklickt wurde Allgemeine Java-Themen 2
RalleYTN 3D Objekt Translation basierend auf Rotation (Probleme mit Z Rotation) Allgemeine Java-Themen 0
B Von String zu <Objekt> ||Speichern/Laden Allgemeine Java-Themen 17
G Neues Objekt aus List<JsonObject> mit Stream Allgemeine Java-Themen 4
P Threads Objekt im Konstruktor anders wie im Run()-Block Allgemeine Java-Themen 10
R Objekt funktioniert nicht auf iOS Allgemeine Java-Themen 15
K Textdatei als Objekt Allgemeine Java-Themen 4
Viktim Classenname zu Objekt Allgemeine Java-Themen 4
P Entity Objekt Methoden vs Service methoden Allgemeine Java-Themen 2
D Datentypen Klassenattribut aus Objekt in generischer Liste Allgemeine Java-Themen 15
O Klassen Bruch im gleichen Objekt Speichern Allgemeine Java-Themen 1
P Liste zu Objekt umwandeln Allgemeine Java-Themen 4
C Liste checken auf MINDESTENS ein Objekt | Bukkit Allgemeine Java-Themen 3
K Best Practice JFrame Objekt allgemein zugänglich machen Allgemeine Java-Themen 8
B ArrayList in ein Objekt legen Allgemeine Java-Themen 1
D Objekt entlang eines Funktionsgraphens bewegen Allgemeine Java-Themen 6
M Objekt serialisieren/deserialisieren und in einer SQLite-Datenbank speichern Allgemeine Java-Themen 3
D Java Objekt als Service in Runtime registrieren Allgemeine Java-Themen 1
S Interaktion mit einer website (website als Objekt?) Allgemeine Java-Themen 3
J OOP Überwachen, ob ein Objekt erzeugt wird Allgemeine Java-Themen 9
S Byte Array welches in Laufzeit aufgelöst wird // Objekt Array Allgemeine Java-Themen 3
Thallius Hash über serialisiertes Objekt? Allgemeine Java-Themen 3
Developer_X Input/Output Serialisiertes Objekt speichern und laden Allgemeine Java-Themen 1
C Generics Objekt in ArrayList Allgemeine Java-Themen 2
L Klassen Konstruktor soll Objekt anderer Klasse erzeugen Allgemeine Java-Themen 2
F Neues Objekt aus .CSV definition Allgemeine Java-Themen 3
K Methoden Objekt wird nicht erkannt Allgemeine Java-Themen 11
P Objekt mit verschiedenen Datentypen Allgemeine Java-Themen 5
T Objekt kontaktiert seinen "erzeuger" Allgemeine Java-Themen 5
S Objekt orientierte Programmierung Allgemeine Java-Themen 7
C Objekt Datenverlust nach Methodenaufruf Allgemeine Java-Themen 9
H JavaFX Von einer Methode auf stage-Objekt zugreifen Allgemeine Java-Themen 3
T WeakReference/PhantomReference: Mitbekommen WELCHES Objekt nun GC'ed wird Allgemeine Java-Themen 2
T Class-Objekt mit URLClassloader Allgemeine Java-Themen 7
P Konsoleneingabe übernehmen und Objekt instanzieren. Allgemeine Java-Themen 5
E Auf Java-Objekt aus anderer Instanz zugreifen Allgemeine Java-Themen 26
L Klassen Polymorphie:2 Attribute gleichen Namens in einem Objekt Allgemeine Java-Themen 6
F Dynamisch ein Objekt einer bestimmten Subklasse erstellen Allgemeine Java-Themen 7
D Player Objekt - Frame über Server anzeigen lassen. Allgemeine Java-Themen 3
V Objekt löschen Allgemeine Java-Themen 7
A OOP Wie auf Objekt der Superklasse zugreifen? Allgemeine Java-Themen 6
M neues Objekt speichern, nicht Referenz Allgemeine Java-Themen 10
B synchronisierter zugriff auf Objekt Allgemeine Java-Themen 6
C Objekt Typ herausfinden Allgemeine Java-Themen 5
E Objekt beim Erzeugen in ArrayList Allgemeine Java-Themen 9
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
M Objekt aus Liste in Liste suchen/löschen Allgemeine Java-Themen 6
D Eigenen Objekt Pool Allgemeine Java-Themen 15
C blueJ: Objekt wird nicht in Objektleiste angezeigt Allgemeine Java-Themen 8
T Objekt 2x deserialisieren, aber nur 1x im Heap haben? Allgemeine Java-Themen 4
sambalmueslie Benachrichtigung bei neuer Objekt-Instanz Allgemeine Java-Themen 5
G Konstante in Objekt definieren Allgemeine Java-Themen 6
D this mit Objekt überschreiben Allgemeine Java-Themen 17
R Synchronized - auf welchem Objekt Allgemeine Java-Themen 16
E Objekt erstellen Allgemeine Java-Themen 7
M Timer von nicht existiertem Objekt stopen Allgemeine Java-Themen 5
M Swing-Frontend abhängig von ausgewähltem Objekt Allgemeine Java-Themen 4
J Lebt das Objekt noch?? Allgemeine Java-Themen 12
K Objekt einer konkreten Implementierung eines Interfaces durch übergebenen String Allgemeine Java-Themen 2
K Objekt-Austausch zwischen zwei Programmen über System-Clipboard Allgemeine Java-Themen 5
S Performance Frage: Objekt oder static? Allgemeine Java-Themen 33
B Speicherverbrauch Objekt-Referenz Allgemeine Java-Themen 11
D Browser-Objekt erzeugen Allgemeine Java-Themen 8
B FileWriter / FileReader testen / Mock-Objekt für Unit Tests? Allgemeine Java-Themen 6
R Objekt zur Laufzeit zerstören? Allgemeine Java-Themen 12
hdi Frage zur Objekt Initialisierung Allgemeine Java-Themen 4
X Prozess-Objekt nach Ausführung der destroy-Methode null oder nicht null ? Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben