Input/Output Objekte speichern ohne überschreiben

RoyalTS

Mitglied
Hallo Leute,

ich schildere euch mal kurz und knapp was mein Programm tun soll und wo mein Problem liegt.
Ich habe eine Klasse Person implementiert, ihr werden im Konstruktor der vorname, der nachname und das geburtsdatum übergeben. die klasse enthält noch eine methode, die das alter der person berechnet.
nun geht es darum dass diese personen gespeichert werden sollen. allerdings kann ich irgendwie nur eine person speichern da er mir die dati immer überschreibt. im folgenden seht ihr den Code der Klasse Persistence die für das Speichern und laden verantwortlich ist:

Java:
package sourceCode;

import java.io.*;

public class Persistence implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	public static void saveObject(Person person){
		
		try{
			FileOutputStream datei = new FileOutputStream("DB.dat");
			ObjectOutputStream out = new ObjectOutputStream(datei);
			
			out.writeObject(person);
			datei.close();
		}catch(IOException e){
			System.out.println("E-Fehler save: " + e.getMessage());
		}
	}
	
	public static void loadData(){
		Person tempPerson;
		
		try{
			FileInputStream datei = new FileInputStream("DB.dat");
			ObjectInputStream in = new ObjectInputStream(datei);
			
			while(true){
				tempPerson = (Person)in.readObject();
				System.out.println(tempPerson + "\n");
			}
		}catch(EOFException e){
			
		}catch(Exception e){
			System.out.println("A-Fehler load: " + e.getMessage());
		}
		
	}

}

Jetzt der Quellcode der ausführenden Klasse Geburtstagskalender:

Java:
package sourceCode;

import java.util.Calendar;
import java.util.GregorianCalendar;




public class Geburtstagskalender {
	
	public static void main(String[] args) {
		
		
		GregorianCalendar tdat = new GregorianCalendar(1991, Calendar.JUNE, 6);
		Person tom = new Person("Tom", "muster", tdat);
		GregorianCalendar adat = new GregorianCalendar(1988, Calendar.MAY, 6);
		Person alex = new Person("alex", "mann", adat);
		Persistence.saveObject(tom);
		Persistence.saveObject(alex);
		Persistence.loadData();
		
		
		
		
		
	
		
		
		
	}
}

die ausgabe des Programms ist dann 2mal die Daten von alex.
allerdings hätte ich natürlich gern erst die daten von tom und dann von alex.
was mache ich falsch???

Ich hoffe die Problembeschreibung ist genau genug und ihr könnt mir bald helfen.

Mit freundlichen Grüßen

RoyalTS
 
S

SlaterB

Gast
2x die Ausgaben von alex sehe ich nicht,
du speicherst nur eine Person, alex überschreibt Tom, aber dann nur eine Ausgabe, 1x alex..

allgemein gibt es für Textdateien im Stream einen Parameter um ans Ende einer Datei anzuhängen statt Datei zu überschreiben,
ObjectStreams kommen damit aber nicht klar, du musst die Datei immer komplett schreiben,
wenn mehrere Personen drinstehen sollen, dann musst du sie alle gleichzeitig schreiben,
solange im Programm merken oder notfalls vor dem zweiten Schreiben die erste Person wieder laden..

Tipp: immer nur ein Objekt in der Datei speichern, z.B. eine Liste von Personen oder eine Klasse 'Data' mit verschiedenen Attributen,
Personen und sonstigen Dingen,
dann musst du auch nur ein Objekt laden, siehst anhand der Liste wieviele Personen(size()) usw.,
Schleifen mit Exceptions sind nicht nötig

die Persistence-Klasse muss bisher eigentlich nicht Serializable sein ;)
 
Zuletzt bearbeitet von einem Moderator:

RoyalTS

Mitglied
allgemein gibt es für Textdateien im Stream einen Parameter um ans Ende einer Datei anzuhängen statt Datei zu überschreiben,
ok, also ich denke es wäre quasi das beste die personen in eine Textdatei zu speichern, kannst du mir hierzu einen link oder ein kurzes beispielprogramm geben damit ich weiß wie das funktioniert, bzw wie dieser "Parameter" lautet? :D
 
S

SlaterB

Gast
Suchmaschine 'java text an Datei anhängen'

von ObjectStream auf Text zu wechseln ist ja ganz schön radikal, aber durchaus zu begrüßen,
in einfachen Fall eine Zeile pro Objekt, einfaches Format,
überlegenswert ist XML oder CSV, kann man alles suchen bzw. selber formatieren
 

RoyalTS

Mitglied
so hallo nochmal,

bin jetzt die ganze nacht drangesessen und hab versucht das alles als textdatei abzuspeichern, was auch mehr oder weniger funkioniert hat, allerdings kann ich dann nach dam laden nicht mehr die methoden auf die objekte anwenden, was ja logisch ist. allerdings brauch ich das. daher erneut meine frage, wie kann ich objekte nacheinander in die datei schreiben ohne ein objekt zu überschreiben? wie gesagt die andere variante mit der textdatei habe ich schon ausprobiert, allerdings bringt sie mich nicht weiter.

Mfg

RoyalTS
 
S

SlaterB

Gast
was genau ist an meinen ersten Ausführungen nicht zu verstehen?
ich will nicht alles wiederholen, fange mit einem Punkt an:
- eine einmal geschriebene ObjectStream-Datei kann nicht mehr sinnvoll geändert werden,
Punkt fertig aus, verstanden oder nicht?
Alternativen habe ich ja genannt
 

RoyalTS

Mitglied
aber genau darum geht es mir, ich will die personen laden und sie dann immernoch bearbeiten können.
es mag ja sein das meine art es zu probieren falsch ist, aber wenn ich die personen in eine textdatei schreibe kann ich sie danach auch nicht mehr bearbeiten, z.b. namen ändern etc. also muss eine andere lösung her
 
S

SlaterB

Gast
du kannst eine Textdatei verändern,
du kannst aus einer Textdatei lesen und Personen-Objekt erstellen, natürlich nicht so direkt wie mit ObjectStreams,
du könntest überlegen, eine richtige Datenbank zu wählen

für mich sagst du nichts neues mehr, es gibt kein konkretes Problem,
ich werde dich kaum deine komplette Softwareentwicklung begleiten oder auch nur Persistenz-Konzepte ausarbeiten..
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Objekte speichern und laden Allgemeine Java-Themen 10
H Objekte speichern und laden Allgemeine Java-Themen 1
C Objekte in Array List speichern? Allgemeine Java-Themen 1
OnDemand Objekte speichern Allgemeine Java-Themen 8
M Instanzierte Objekte in XML Dokument speichern Allgemeine Java-Themen 3
K Input/Output Im Programm instanzierte Objekte Speichern und laden Allgemeine Java-Themen 3
H Objekte Serialisiert speichern Allgemeine Java-Themen 10
J Objekte binär speichern Allgemeine Java-Themen 10
W Objekte speichern mit JFileChooser Allgemeine Java-Themen 8
F Objekte oder besser ID in Listen speichern? Allgemeine Java-Themen 2
O binärer Suchbaum mit client server., objekte speichern. Allgemeine Java-Themen 2
M Objekte Dauerhaft speichern und evtl. auch ändern? Allgemeine Java-Themen 6
M Objekte in Array speichern Allgemeine Java-Themen 19
M Objekte speichern? Allgemeine Java-Themen 2
Chris_1980 Bilder u. Objekte in JarArchiv speichern Allgemeine Java-Themen 2
Q Speichern & Wiederherstellen von Daten (-objekte) Allgemeine Java-Themen 7
G Objekte verschlüsselt in Dateien speichern und laden Allgemeine Java-Themen 2
schegga_B javax.crypto - Cipher Objekte - Sevice Provider matching? Allgemeine Java-Themen 1
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
L Objekte in Set nicht gefunden Allgemeine Java-Themen 13
Avalon Data Transfer Objekte aus Datenbank erstellen Allgemeine Java-Themen 8
G Objekte mit Strings Aufrufen Allgemeine Java-Themen 8
MiMa Referenz auf Objekte und deren Inhalte Allgemeine Java-Themen 12
W Objekte reproduzieren Allgemeine Java-Themen 2
W Objekte per Reflexion instanziieren Allgemeine Java-Themen 7
W Unittest - Objekte simulieren Allgemeine Java-Themen 7
T OOP Objekte mit Erweiterung Initialisieren Allgemeine Java-Themen 6
O Erste Schritte Objekte als Datenelemente Allgemeine Java-Themen 14
J Equals Mock Objekte Allgemeine Java-Themen 5
J Mockito - Objekte miteinander vergleichen (equals) Allgemeine Java-Themen 6
N Bei Mouse Events nicht mehrere Objekte erstellen Allgemeine Java-Themen 13
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
J Java Objekte = null, Garbagecollector Allgemeine Java-Themen 12
F Listen - Mehrere Objekte Allgemeine Java-Themen 1
J Verständnis Frage zur Instanz, Objekte, Instanzierung, Referenz Allgemeine Java-Themen 14
F Objekte erzeugen Allgemeine Java-Themen 1
E Threads ThreadPoolExecutor remove mit callable Objekte Allgemeine Java-Themen 3
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
E OOP Objekte und Methoden Allgemeine Java-Themen 1
@SupressWarnings() Umgebungsvariable Objekte "gekoppelt" Allgemeine Java-Themen 6
S Algorithmus um Objekte auf einer Flaeche mit gleichem Abstand anzuordnen..? Allgemeine Java-Themen 20
B Objekte anhand von Properties file Allgemeine Java-Themen 41
U Tiefe Objekte schreiben Allgemeine Java-Themen 1
R Abstrakte Basisklasse und instanzierte Objekte der abgeleiteten Klasse als Basisklasse übergeben Allgemeine Java-Themen 2
E 3D Objekte in 2D Bild finden Allgemeine Java-Themen 5
J Daten aus GUI auslesen und in Objekte umwandeln Allgemeine Java-Themen 6
F FileOutput/Input Objekte Allgemeine Java-Themen 6
OnDemand Objekte serialisieren Allgemeine Java-Themen 3
J unterschiedliche Objekte, selbe getter und setter Allgemeine Java-Themen 15
L Lib gesucht: Java-Objekte mit JSON Allgemeine Java-Themen 2
U Set erklären dass objekte gleich sind Allgemeine Java-Themen 12
E Best Practice Verdammt große Objekte Allgemeine Java-Themen 10
B Mehrere Objekte verschlüsselt serialisieren Allgemeine Java-Themen 6
G Liste anzahl der gleichen Objekte Allgemeine Java-Themen 6
N Objekte an eine andere Applikation übergeben Allgemeine Java-Themen 3
N 2 Objekte zu einer Gruppe zusammenfügen Allgemeine Java-Themen 7
B Verschiedene Objekte in Abhängigkeit eines Typs instanziieren. Allgemeine Java-Themen 17
S OOP Objekte als Return-Werte: Einen Klon zurückgeben oder Instanz auf das Feld? Allgemeine Java-Themen 10
L MouseListener für viele Objekte erstellen Allgemeine Java-Themen 16
5 Objekte Sortieren lassen Allgemeine Java-Themen 7
N Objekte aus Array Inhalt erzeugen Allgemeine Java-Themen 8
L Input/Output Textdatei in Objekte überführen? Allgemeine Java-Themen 4
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
H Threads Thread stirbt aber Objekte in ihm leben weiter?! Allgemeine Java-Themen 9
M Java Objekte in XML mit JAXB Allgemeine Java-Themen 9
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
H COM-Objekte/ AktiveX Objekte Allgemeine Java-Themen 4
C Script für Website mit Objekte Ausblenden Allgemeine Java-Themen 3
M Txt einlesen & Objekte erzeugen Allgemeine Java-Themen 2
X Objekte aus TableModel serialisieren und deserialisieren Allgemeine Java-Themen 4
T ObjectInputStream - Arrayliste, die unbekannte Objekte enthält Allgemeine Java-Themen 9
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
D Grafische Objekte zeichnen Allgemeine Java-Themen 4
A Wie zur Laufzeit auf Objekte zugreifen Allgemeine Java-Themen 7
F Referenzen auf Objekte Allgemeine Java-Themen 5
H Eclipse und Objekte Allgemeine Java-Themen 6
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
E Objekte in einer Liste suchen. Allgemeine Java-Themen 4
I Über eine Liste iterieren und Objekte löschen. Wie löst man das sauber? Allgemeine Java-Themen 5
I Pattern zum Erweitern existierender Objekte Allgemeine Java-Themen 4
N Dynamische Objekte / DB Allgemeine Java-Themen 5
TiME-SPLiNTER Unbekannte Anzahl serialisierter Objekte lesen Allgemeine Java-Themen 2
V Objekte in Kategorien einteilen. Allgemeine Java-Themen 6
M 3D Objekte mit einer Linie Verbinden Allgemeine Java-Themen 3
F Wie zur Laufzeit ganz neue Objekte erzeugen? Allgemeine Java-Themen 5
A Dummy-Objekte für Webgui erzeugen Allgemeine Java-Themen 12
D befehl auf mehrere objekte anwenden Allgemeine Java-Themen 7
L Objekte in Liste packen Allgemeine Java-Themen 2
S XML in Objekte wandeln. Euer Rat? Allgemeine Java-Themen 12
G Objekte serialisieren Allgemeine Java-Themen 2
L Parameter-Objekte verändern oder nicht? Allgemeine Java-Themen 6
D Objekte nur unter bestimmten Voraussetzungen erzeugen Allgemeine Java-Themen 4
S Objekte mit Arrays Allgemeine Java-Themen 9
S erzeugte objekte zählen Allgemeine Java-Themen 3
U auf Objekte mit variablem Namen zugreifen Allgemeine Java-Themen 4
Airwolf89 dynamischer Zugriff auf Variablen/ Objekte Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben