# Daten an Vektor übergeben und abspeichern als txt Datei?



## KleinesNadine (13. Februar 2008)

Hallo, ich bins nochmal... und zwar habe ich eigentlich 2 Probleme, Ich habe mehrere Daten die ich aus Textfeldern einlese und dann in einer JTable abspeichere. Dazu habe ich diesen Quelltext:  


```
class Lauscher implements ActionListener
      {

       Vector test = new Vector();
       
       public void actionPerformed(ActionEvent e)
        {
          String button = e.getActionCommand();

           if (button.equals("Übergeben"))
           {
             
             String vorname = jtf_vorname.getText();
             String name = jtf_name.getText();
             int  geburtsjahr = Integer.parseInt(jtf_geburtsjahr.getText());
             String strasse = jtf_straße.getText();
             int hausnr = Integer.parseInt(jtf_hausnr.getText());
             int telefonnr = Integer.parseInt(jtf_telefonnr.getText());
             int plz = Integer.parseInt(jtf_plz.getText());
             String wohnort = jtf_wohnort.getText();

             
              test.add(vorname);
               test.add(name);
               test.add(geburtsjahr);
               test.add(strasse);
               test.add(hausnr);
               test.add(telefonnr);
               test.add(plz);
               test.add(wohnort);
               dtm_test.addRow(status);

               jtf_geburtsjahr.setText("");
               jtf_name.setText("");
               jtf_wohnort.setText("");
               jtf_telefonnr.setText("");
               jtf_vorname.setText("");
               jtf_plz.setText("");
               jtf_straße.setText("");
               jtf_hausnr.setText("");				

           }
```

Das Funktioniert auch schon fast, Problem ist:
ich schreibe meine Daten in Textfelder, klicke auf übergeben,..das funktioniert auch,.. wi man sieht werden danach die Textfelder geleert. Wenn ich nun andere Daten in die Felder eintrage und wieder auf übergeben klicke, speichert er aber immer wieder die Daten des ersten Datensatzes ab! Woran kann das liegen?

Zweite Frage:

Diese gesamten Daten die ich in die Tabelle geschrieben habe möchte ich nun in eine Txt Datei abspeichern und auch wieder einlesen können... Dazu dieser Quelltext:



```
else if (button.equals("Speichern"))
          {

             Writer fw = null;

              try
              {
                fw = new FileWriter( "C://inhalt.txt" );
                fw.write(""+test);
                fw.append('\n');

                JOptionPane speichern = new JOptionPane(new Object[]{"Datei wurde gespeichert!"});

                JDialog dialogspeichern = speichern.createDialog(null, "Info!");
                dialogspeichern.setModal(true);
                dialogspeichern.pack();
                dialogspeichern.setVisible(true);
              }

              catch ( IOException b )
              {
                System.err.println( "Konnte Datei nicht erstellen" );
              }

              finally {
                if ( fw != null )
                  try { fw.close(); } catch ( IOException d ) { }
              }


          }
```


Problem ---> fw.write(""+test); das geht nicht so einfach, warum weiß ich leider selber nicht! Bin Dankbar für jeden Tipp! Gruß Nadine


----------



## polenben (14. Februar 2008)

Wo bekommst du denn den Vektor her, mit dem du in deinem Array schreibst? Liest du da schon aus einer Datei etwas aus oder per Consoleneingabe.

Wenn ich das richtig verstanden habe, dann willst du die im Array zwischengespeicherten Daten in eine txt übertragen.

Evtl hilft dir der Code hier weiter:


```
//Das Progamm liest Zeilenweise aus einer datei aus und schreibt es in eine andere datei 

import java.io.*; 
public class Test { 
public static void main (String[] args ) { 
try { 
BufferedReader in = new BufferedReader( new FileReader("test.txt"));
BufferedWriter out = new BufferedWriter( new FileWriter("test1.txt", false ));
String str; 
while ((str = in.readLine()) != null){ 
out.write(str); 
out.newLine();
}
out.flush(); 
out.close(); 
in.close(); 
} 
catch(Exceptione) {} 
} 
}
```


----------



## Matze (14. Februar 2008)

Ich würde msl spontan sagen, du musst den Output-Stram flushen (flush()). Bin aber nicht ganz sicher.


----------



## KleinesNadine (14. Februar 2008)

Also das erste Problem ist gelöst, ich habe den Vektor an der falschen stelle definiert, deshalb hat er immer den gleich Datensatz in die Tabelle geschrieben, man muss erst die Textfelder einlesen und dann den Vector definieren.

Achso, Danke für die hilfe, aber irgentwie kann ich damit nichts anfangen, leider!


----------



## Matze (14. Februar 2008)

Ich würde versuchen, den ganzen Vector so wie er ist zu speichern, dass hat auch den Vorteil, dass man normal nicht ohne das Programm an die Daten kommt.

Oder willst du es unbedingt als txt File abspeichern?


----------



## J0n3x (14. Februar 2008)

```
private void writeFile() throws Exception {
  try {      
    File file = new File("pfad/dateiname.txt"); // @Override -> Deine Daten!
    file.createNewFile();
    FileWriter writer = new FileWriter(file);
    
    // @Override ("test" ist kein schöner Name für einen Vector)
    for (int i = 0; i < test.size(); i++) 
        writer.write(test.get(i).toString());
      
    writer.write("\n");

    writer.flush();
    writer.close();
  } catch (Exception ex) {
    throw ex;
  }
}
```

Jedoch finde ich deinen Ansatz generell ziemlich sinnlos! Wenn du eine fest definierte Anzahl an Daten hast (Name, Vorname etc.), würde ich das nicht mit einem Vector lösen. Da reicht ein Array mit den Daten, welches du dann in eine ArrayList speichern könntest. 

Wenn du jetzt allerdings keinen Plan hast, von was ich da rede, dann lass es aber lieber so wie du es jetzt schon hast!


----------

