Speichern und Öffnen

Hallo Leute,

ich habe folgende Frage, wie kann ich aus mehreren JTextField und JFormattedTextField in eine Datei den Inhalt speichern, es soll auch beim Speichern vor bestimmten Inhalt noch Text reinkommen.
Dieser gespeicherte Inhalt, soll beim nächsten Öffnen des GUIs wieder in den gleichen Feldern stehen!!!

Kann mir jemand sagen, ob sowas möglich ist und wie ich es konstruieren kann!!!???

MfG
Sanda

//Felder auslesen:
String text = feld.getText();

//text bearbeiten
text.änderMich();

//text speichern
FileWriter etc;

und

//beim start der gui werte besetzen
FileReader etc;

feld.setText();

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Das nutzt mir nicht viel, weil ich kein konkretes Beispiel habe!!!

Persistenz
Hi,

ganz klassisch das MVC Pattern mit einer Persistenzschicht die auf das Filesystem geht.

Gruss,

Herb

Dieser Ausschnitt aus meinem Programm speichert aus den viel Feldern Inhalt in eine Datei, ohne Leerzeilen ect., es schreibt einfach den Inhalt in eine Zeile, doch ich würde gerne noch vor dem Inhalt der aus den Felder gespeichert wird, noch Text einfügen. Wie kann ich das realisieren???

String filename = „hh.txt“;
JFormattedTextField jFormattedTextField1;
JFormattedTextField jFormattedTextField2;
PrintWriter ausgabeDatei;
JTextField jTextField1;
JTextField jTextField2;
public void actionPerformed(ActionEvent event) {
if (event.getSource() == jButton1) {
try {
ausgabeDatei = new PrintWriter (new FileWriter(filename, true));
ausgabeDatei.print(jTextField1.getText() );
ausgabeDatei.print(jTextField2.getText() );
ausgabeDatei.print(jFormattedTextField1.getText() );
ausgabeDatei.print(jFormattedTextField2.getText() );
ausgabeDatei.close();
}
catch (IOException e) {
System.err.println("Dateifehler "+e.toString() );
System.exit(1);
}
}
}

gerne noch vor dem Inhalt der aus den Felder gespeichert wird,
noch Text einfügen. Wie kann ich das realisieren???

Je nach dem wie du das haben moechtest. Ein Beispiel:

ausgabeDatei.print("\>\>\> Ich bin ein Text 
Gruss, Patrick

Wieso speichert java in eine Datei weiter und überschreibt die Datei nicht,
z.B. ich speichere Infos aus TextFields in eine Datei und bei nächsten Speichern speichert es einfach in die Datei weiter, genaus das soll es aber nicht, wie kann ich das Problem lösen???

Deswegen haengt er in der Datei neue Zeilen an:

...(new FileWriter(filename, true));

Setz das mal auf false oder lass das Flag ganz weg.

http://java.sun.com/j2se/1.4.2/docs/api/java/io/File…

Gruss, Patrick

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Dieser Ausschnitt aus meinem Programm speichert aus den viel
Feldern Inhalt in eine Datei, ohne Leerzeilen ect., es
schreibt einfach den Inhalt in eine Zeile, doch ich würde
gerne noch vor dem Inhalt der aus den Felder gespeichert wird,
noch Text einfügen. Wie kann ich das realisieren???

String filename = „hh.txt“;
JFormattedTextField jFormattedTextField1;
JFormattedTextField jFormattedTextField2;

//meist besser
BufferedWriter ausgabeDatei;

JTextField jTextField1;
JTextField jTextField2;

char trennzeichen =’|’;

public void actionPerformed(ActionEvent event) {
if (event.getSource() == jButton1) {
try {
ausgabeDatei = new BufferedWriter (new

FileWriter(filename, true));
ausgabeDatei.write(jTextField1.getText()+trennzeichen );
ausgabeDatei.write(jTextField2.getText()+trennzeichen );
ausgabeDatei.write(jFormattedTextField1.getText() +trennzeichen);
ausgabeDatei.write(jFormattedTextField2.getText());

ausgabeDatei.close();
}
catch (IOException e) {
System.err.println("Dateifehler "+e.toString() );
System.exit(1);
}
}
}

void einlesen(){
BufferedReader bR = new BufferedReader(new FileReader(filename));

String zeile = bR.readLine();
bR.close();
String[] felder = zeile.split(trennzeichen);
jTextField1.setText(felder[0])
jTextField2.setText(felder[1])
jFormattedTextField1.setText(felder[2]);
jFormattedTextField2.setText(felder[3]);
}

Hi,
erstmal danke für deine hilfreichen Tipps,
aber mit dem Auslesen klappt es noch nicht!!???
Irgendwie macht die Methode gar nichts???

split() kann ja nur Strings splitten, ich wollte aber nach einem String, der mit Leerzeichen getrennt ist, auslesen, z.B.

Sessions 49

die 49 soll im JFormattedTextField ausgegeben werden!!!

Ich hoffe es kann mir jemand helfen!!!

Hi Sanda,

ich würde für deine Problemstellung eine XML-Datei verwenden.
Den Aufbau deines Formulars kannst du ohne weiteres in XML abbilden. Es gibt verschiedene Java-Frameworks, die dir dabei unter die Arme greifen.

Ich verwende z.B. Castor von Exolab.
Dabei erstellt man z.B. ein XML-Schema (XSD) und lässt sich von Castor die zugeörigen Java-Klassen erzeugen. Diese stellen dann u.a. Methoden zum Speichern in und Lesen aus XML-Dateien zur Verfügung.

Kurzes Beispiel:

MyFormularClass formData = (MyFormularClass)MyFormularClass.unmarshalMyFormularClass(new FileReader("C:/myFormData.xml"));
m\_TextFieldName.setText(formData.getName());
m\_TextFieldStreet.setText(formData.getStreet());

So sieht z.B. dann das Auslesen einer XML-Datei aus, wobei die Felder Name und Street von dir definiert sind.

Ein Blick darauf lohnt sich sicher, aber ich weiß ja nicht, welche Ziele du hast.

Ciao, Bill

trennzeichen = " ";

sonst wie oben

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]