Servus,
aktuell bin ich dabei eine Bibliohek für das Einspeichern, Auslesen (löschen etc. soweit bin ich noch nicht) von Werkzeugen anzulegen. Der Speichermechanismus funktioniert über eine Serialisierung.
Problem: Das Serialisieren/ Deserialisieren verhält sich sehr komisch:
Ich füge neu anzulegende Objekte mit der Syntax
try (FileOutputStream fos = new FileOutputStream ("tools_cyl.ser", true);
ObjectOutputStream oos = new ObjectOutputStream (fos)) {
oos.writeObject(tools_cyl);
}
ans Ende der aktuellen Serialisierungsdatei hinzu (.ser Datei wird also nicht überschrieben, sollte eigentlich so passen).
Wenn ich nun in einem Programmdurchlauf A ein Werkzeug einspeichere und im nächsten Durchlauf B ein anderes Werkzeug und dann im Durchlauf C nach diesen Werkzeugen suche, finde ich sie auch. Das funktioniert bis zu diesem Punkt alles einwandfrei. Ab dem Punkt, dass ich aber ein drittes Werkzeug in einem separaten Programmdurchlauf hinzufüge, kann man dieses nicht mehr finden.
Es gibt auch die Möglichkeit mehrere Werkzeuge in einem Programmdurchlauf zu speichern, dann kann ich diese auch suchen und finden, unabhängig wie viele Werkzeuge ich speichere.
Ich sitze jetzt ewig dran und versuche eine Lösung zu finden, bin aber völlig ratlos.
Ich verstehe überhaupt nicht, wo das Problem liegt, denn das Beispiel mit Durchlauf A, B, C zeigt ja, dass es (wenn auch nur für die ersten 2 Werkzeuge) prinzipiell möglich ist, Objekte in separaten Durchläufen zu speichern und auch wieder zu finden.
Die Eclipse Archiv Datei findet ihr hier:
(Hauptklasse ist Tool_Lib,
Am Anfang Deklaration der globalen Variablen, inkl. einer ArrayList in die die neuen Werkzeuge eingespeichert werden,
danach Abfrage, was der Benutzer machen will (Werkzeug speichern, finden, löschen etc.)
setTool_Cyl ist eine Funktion zur Erzeugung eines Werkzeugs- das Objekt wird dann in oben genannte ArrayList hinzugefügt
getTool_Cyl ist die Funktion zur Suche nach einem Werkzeug- hier wird eine geklonte ArrayList aus der .ser Datei erzeugt und dann nach Übereinstimmung gesucht
Die main ist das Hauptprogramm, falls ein neues Werkzeug/ neue Werkzeuge gespeichert wird/ werden, wird hier auch die so entstandene ArrayList an die .ser Datei angehängt)
Ich hoffe auf eure Hilfe!!
Grüße,
Max
aktuell bin ich dabei eine Bibliohek für das Einspeichern, Auslesen (löschen etc. soweit bin ich noch nicht) von Werkzeugen anzulegen. Der Speichermechanismus funktioniert über eine Serialisierung.
Problem: Das Serialisieren/ Deserialisieren verhält sich sehr komisch:
Ich füge neu anzulegende Objekte mit der Syntax
try (FileOutputStream fos = new FileOutputStream ("tools_cyl.ser", true);
ObjectOutputStream oos = new ObjectOutputStream (fos)) {
oos.writeObject(tools_cyl);
}
ans Ende der aktuellen Serialisierungsdatei hinzu (.ser Datei wird also nicht überschrieben, sollte eigentlich so passen).
Wenn ich nun in einem Programmdurchlauf A ein Werkzeug einspeichere und im nächsten Durchlauf B ein anderes Werkzeug und dann im Durchlauf C nach diesen Werkzeugen suche, finde ich sie auch. Das funktioniert bis zu diesem Punkt alles einwandfrei. Ab dem Punkt, dass ich aber ein drittes Werkzeug in einem separaten Programmdurchlauf hinzufüge, kann man dieses nicht mehr finden.
Es gibt auch die Möglichkeit mehrere Werkzeuge in einem Programmdurchlauf zu speichern, dann kann ich diese auch suchen und finden, unabhängig wie viele Werkzeuge ich speichere.
Ich sitze jetzt ewig dran und versuche eine Lösung zu finden, bin aber völlig ratlos.
Ich verstehe überhaupt nicht, wo das Problem liegt, denn das Beispiel mit Durchlauf A, B, C zeigt ja, dass es (wenn auch nur für die ersten 2 Werkzeuge) prinzipiell möglich ist, Objekte in separaten Durchläufen zu speichern und auch wieder zu finden.
Die Eclipse Archiv Datei findet ihr hier:
ToolLib_130422.zip
1 file sent via WeTransfer, the simplest way to send your files around the world
we.tl
(Hauptklasse ist Tool_Lib,
Am Anfang Deklaration der globalen Variablen, inkl. einer ArrayList in die die neuen Werkzeuge eingespeichert werden,
danach Abfrage, was der Benutzer machen will (Werkzeug speichern, finden, löschen etc.)
setTool_Cyl ist eine Funktion zur Erzeugung eines Werkzeugs- das Objekt wird dann in oben genannte ArrayList hinzugefügt
getTool_Cyl ist die Funktion zur Suche nach einem Werkzeug- hier wird eine geklonte ArrayList aus der .ser Datei erzeugt und dann nach Übereinstimmung gesucht
Die main ist das Hauptprogramm, falls ein neues Werkzeug/ neue Werkzeuge gespeichert wird/ werden, wird hier auch die so entstandene ArrayList an die .ser Datei angehängt)
Ich hoffe auf eure Hilfe!!
Grüße,
Max