Serialisierung: readInt + writeInt

Status
Nicht offen für weitere Antworten.

Jonnsn

Bekanntes Mitglied
Hallo,

ich habe ein programm dass irgendwelche objekte erstellt und diese serialisiert in einer datei speichert. Dabei speichere ich die Anzahl der objekte mittels writeInt. Bei einem erneuten Programmstart möchte ich nun zuerst schauen, ob bzw. wievile Objekte bereits vorhanden sind, das mache ich mittels readInt - dabei kommt jedoch immer nur der Wert des ersten programmstarts raus.
Frage also: wie wird denn bei writeInt gespeichert? bzw. wie kann ich immer den selben int-Wert überschreiben :D ( ich verstehe es momentan so, dass das programm jedes Mal bei writeInt einen weiteren wert speichert. readInt liefert mir dann den ersten davon... also den vom ersten Programmstart - stimmt das so?) ???:L

Danke
 
S

SlaterB

Gast
> also den vom ersten Programmstart

wenn du die Datei neu schreibst, dann ist die alte komplett weg,
wie soll da was von früher übrigbleiben?
poste doch mal etwas Code, idealerweise ein vollständiges Programm mit Ablaufbeschreibung bis zum Fehler
 

Jonnsn

Bekanntes Mitglied
so
Code:
FileOutputStream fos= new FileOutputStream("datei.dat",true);
//FileOutputStream(File file, boolean append)
wird das ganze nicht überschrieben sondern angehängt.

Code:
private static File datei= new File("datei.dat");
public static void main (String args[]){
		int anzahl = 0;
		try {
			if(datei.exists()){
				FileInputStream fIn= new FileInputStream(datei);
				ObjectInputStream oIn = new ObjectInputStream(fIn);
				anzahl= oIn.readInt();
				System.out.println("Es sind bereits " + anzahl + " Datensätze angelegt.");
				oIn.close();
			}
			FileOutputStream fOut= new FileOutputStream(datei,true); // nur anhängen, wenn bereits erstellt
			ObjectOutputStream oOut= new ObjectOutputStream(fOut);
			
			// der wert von "anzahl" wird um soviel erhöht wie im folgenden Objekte erzeugt werden sollen
			// und gespeichert
			anzahl += zahlVonObjekten;
			oOut.writeInt(anzahl);

			for (...){
				// Objekterzeugungen und speichern
				oOut.writeObject(...);
			}
			oOut.close();
		}catch(FileNotFoundException e){
			System.out.println("Fehler: " + e);
			System.exit(-1);
		}catch(IOException e){
			System.out.println("Fehler: " + e);
			System.exit(-1);
		}
	}
:)

Edit: der ablauf wäre also:
ich starte das Programm einmal - erzeuge dabei sagen wir 3 Objekte und speichere sie. Datei wird erstellt. alles klar!
dann starte ich ein zweites mal. Es wird ausgegeben: Es sind bereits 3 Datensätze angelegt.
passt. Ich erstelle weitere 2 Objekte und speichere diese dazu.
Später ein weiterer Programmstart. Es wird ausgegeben: Es sind bereits 3 Datensätze angelegt.
Falsch - es sollten 5 sein. :bahnhof:
 
S

SlaterB

Gast
tja, nochmal auf Deutsch:
du hast ein Buch und schreibst auf die erste Seite 3,
am nächsten Tag schaust du dir die erste Seite an, freust dich eine 3 zu sehen und schreibst auf die zweite Seite 5

am nächsten Tag schaust du dir die erste Seite an, und da steht immer noch 3,
was ist nun deine Frage? ;)

> wie kann ich immer den selben int-Wert überschreiben

die da?

entweder Datei komplett neu schreiben oder mit RandomAccessFile die passende Stelle suchen und überschreiben,

bei ObjectOutputStream funktioniert das allerdings meiner Erfahrung nach nicht,
auch dein append geht da nicht,
-> alles auslesen und eine neue Datei schreiben
 

Jonnsn

Bekanntes Mitglied
oh ok - ich dachte das mit dem append ginge. Dann muss ich wohl jedes mal komplett neu schreiben :)
Danke.

damit wohl mehr oder weniger gelöst ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
antonia09 Einkaufszettel Persistenz und Serialisierung Allgemeine Java-Themen 6
D Serialisierung und Deserialisierung von Objekten - Frageprogramm Allgemeine Java-Themen 4
R Datentypen Korrekte integer in Hex ASCII Konvertierung und serialisierung Allgemeine Java-Themen 1
M Serialisierung funktioniert nicht Allgemeine Java-Themen 9
Z Best Practice Serialisierung Allgemeine Java-Themen 2
Arif Input/Output Serialisierung - Datei wird nicht erzeugt Allgemeine Java-Themen 3
M Alternative zur Serialisierung.. Protobuf? Allgemeine Java-Themen 9
E Serialisierung - Deserialisierung Allgemeine Java-Themen 4
Thallius Serialisierung schlägt fehl. Allgemeine Java-Themen 3
M Serialisierung & Verschlüsselung Allgemeine Java-Themen 2
E Serialisierung - Sinn einer generierten serialVersionUID? Allgemeine Java-Themen 4
V Serialisierung von Instanz eigener Klasse Allgemeine Java-Themen 5
A Input/Output Serialisierung und Object.hashCode() Allgemeine Java-Themen 3
K Serialisierung einer verschachtelten Datenstuktur Allgemeine Java-Themen 9
Tobse Input/Output Dateiformat: Serialisierung VS Custom format Allgemeine Java-Themen 6
A Problem bei Serialisierung von Bibliotheks-Klassen Allgemeine Java-Themen 6
A Input/Output Serialisierung Sonderzeichen Allgemeine Java-Themen 3
P Serialisierung der Oberklasse Allgemeine Java-Themen 2
Kr0e Circular reference - Serialisierung Allgemeine Java-Themen 6
K Serialisierung in Properties-Datei möglich? Allgemeine Java-Themen 3
B Serialisierung mit Unterobjekten über Netzwerk Allgemeine Java-Themen 3
C Serialisierung - Standardwert für nachträglich hinzugefügtes Feld Allgemeine Java-Themen 2
S Serialisierung der Kindklasse Allgemeine Java-Themen 5
K Serialisierung komplett selbst machen Allgemeine Java-Themen 13
C Serialisierung ohne Serializable Allgemeine Java-Themen 4
S Serialisierung und Referenzen Allgemeine Java-Themen 6
S Viele Bilder -> Speicher ausgelastet? / (De-)serialisierung geht nicht mehr richtig Allgemeine Java-Themen 8
E Objekt bei Serialisierung ändern Allgemeine Java-Themen 2
Q Serialisierung / Speicherung Geschwindingkeit & Aktuelle Position Allgemeine Java-Themen 7
Z Serialisierung und Deserialisierung einer HashMap Allgemeine Java-Themen 17
W Serialisierung Allgemeine Java-Themen 6
K Serialisierung von Hashmap in Vector Allgemeine Java-Themen 3
F Serialisierung und Obfuscation? Allgemeine Java-Themen 7
G (De)serialisierung und Referenzen Allgemeine Java-Themen 5
T Serialisierung: Wie macht RMI das so schnell? Allgemeine Java-Themen 14
X Einige Fragen zu Serialisierung Allgemeine Java-Themen 2
J bean + serialisierung + serialVersionUID Allgemeine Java-Themen 3
K Serialisierung Allgemeine Java-Themen 6
thE_29 Wie funktioniert Serialisierung? Allgemeine Java-Themen 10
S Problem mit Serialisierung Allgemeine Java-Themen 2
C Serialisierung von JComboBox Allgemeine Java-Themen 4
R DataInputStream readShort, readInt... Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben