FileWriter problem....

barosch

Grünschnabel
Hallo, hab mal ne Frage
Ich schreibe eine Datei und ich möchte das diese Datei unter dem Namen gespeichert wird den der Benutzer vorher eingibt. Es befinden sich mehrere TextFields und er soll das erste Feld nehmen und unter diesem namen eine .txt datei abspeichern.....

"File file = new File("c:/test.txt ");"

So Funktioniert es aber die datei wird immer überschrieben

"File file = new File("c:/" + vorname.getText() + ".txt ");

soetwas in der Art wäre nicht schlecht....
wisst ihr vieleich rat ?
 

barosch

Grünschnabel
"NULL POINTER EXCEPTION"
"NULL"

ich hab versucht dem field schon vorher mit setText einen wert zugeben aber es passiert immer wieder das selbe....
 

barosch

Grünschnabel
Da ist der, du wirst bemerken das ich mich mit fileWriter nicht auskenne deshalb wird beim ersten button(get) alles in eine TextArea geschrieben und beim zweiten (absenden) schreibt er die daten in die .txt , falls du dich wundern solltest wieso das so komisch aufgebaut ist :)

Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.*;

public class Anmeldung extends JFrame
{
    public JLabel lvorname, lnachname, lalter, lort,lplz, lstrasse;
    public JTextField ivorname, inachname, ialter, iort, iplz, istrasse;
    public JTextArea textarea;
    public JPanel folie, panelButton;
    public JButton absenden, get;
    
    File file = new File("c:/" +ivorname.getText() +".txt ");
    
    public Anmeldung()
    {
        super("Save");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        
        folie = new JPanel();
        folie.setLayout(new GridLayout(0,1));
        
        panelButton = new JPanel();
        getContentPane().add(folie);
        
        lvorname = new JLabel("Vorname  ");
        ivorname = new JTextField(20);

        
        lnachname = new JLabel("Nachname    ");
        inachname = new JTextField(20);
        
        
        lalter = new JLabel("Alter  ");
        ialter = new JTextField(20);
        
        lstrasse = new JLabel("Straße   ");
        istrasse = new JTextField(20);
        
        lort = new JLabel("Ort  ");
        iort = new JTextField(20);
        
        lplz = new JLabel("PLZ  ");
        iplz = new JTextField(20);
        
       textarea = new JTextArea();
        
        folie.add(lvorname);
        folie.add(ivorname);
        folie.add(lnachname);
        folie.add(inachname);
        folie.add(lalter);
        folie.add(ialter);
        folie.add(lstrasse);
        folie.add(istrasse);
        folie.add(lort);
        folie.add(iort);
        folie.add(lplz);
        folie.add(iplz);
        
        setSize(500,500);
    
    
           get = createJButtonWith("Fertig", new ActionListener()
        {
          public void actionPerformed(ActionEvent e)    
          {
           String text = ivorname.getText() + " " +  inachname.getText() + " " +  
           ialter.getText() + " " +  istrasse.getText() + " " +  iort.getText() + " " +
           iplz.getText() ;
           textarea.setText(text);
         }
        });
    

       
        absenden = createJButtonWith("Save", new ActionListener() 
    {
        public void actionPerformed(ActionEvent e)
        
        {
            try
            {
                textarea.write(new FileWriter(file));
                
            }
            catch (IOException el)
            {
                el.printStackTrace();
            }
      }
        
    });
    
        panelButton.add(get);
        panelButton.add(absenden);
        getContentPane().add(BorderLayout.SOUTH, panelButton);
        setVisible(true);
   }
    

   
       private JButton createJButtonWith(String caption, ActionListener actionListener) 
      
        {

              JButton btn = new JButton(caption);

              btn.addActionListener(actionListener);

             return btn;

        }

        

}
 

zeja

Erfahrenes Mitglied
Code:
public class Anmeldung extends JFrame
{
    public JLabel lvorname, lnachname, lalter, lort,lplz, lstrasse;
    public JTextField ivorname, inachname, ialter, iort, iplz, istrasse;
    
    File file = new File("c:/" +ivorname.getText() +".txt ");
}

Du bekommst gleich am Anfang eine NullPointerException weil bei der Intialisierung der Klasse auf ivorname zugegriffen wird, welches du selbst noch gar nicht initialisiert hast, was also null ist.

Das muß also direkt in deine Save-Action mit rein:
Java:
absenden = createJButtonWith("Save", new ActionListener() {
			public void actionPerformed(ActionEvent e)

			{
				try {
					File file = new File("c:/" + ivorname.getText() + ".txt");
					textarea.write(new FileWriter(file));

				} catch (IOException el) {
					el.printStackTrace();
				}
			}

		});