Input/Output FileCreater

Grejak

Aktives Mitglied
hallo ich habe gestern ein programm geschrieben das ein JTextField enthält und einen OK JButton
wenn OK gedrückt wird soll einem FileWriter der eingegebene Text als Parameter übergeben werden,
es lässt sich ohne Probleme ausführen
doch es erstellt keine Datei
Code:
Java:
import javax.swing.*;
import java.io.*;
import java.awt.event.*;

public class FileCreater extends JPanel implements ActionListener{


       JFrame frame;
       FileWriter w;
       JTextField tf;
       JButton button;

       public FileCreater(int w,int h){
          this.setPrefferedSize(new Dimension(w,h));
          tf=new JTextField(20);
          this.add(tf);
          button=new JButton("OK");
          this.add(button);
          frame=new JFrame("FileCreater");
          frame.add(this);
          frame.pack();
          frame.setVisible(true);
       }

       public void actionPerformed(ActionEvent event){

       String cmd=event.getActionEvent();
       if(cmd.equals("OK"){
          try{
          w=new FileWriter(tf.getText());
          w.close();
          }catch(IOException ex){
             System.out.println("ERROR");
            }
       }
       }
}
Über hilfe würde ich mich sehr freuen:toll:
 
Zuletzt bearbeitet:

chalkbag

Bekanntes Mitglied
Liegt daran, das da wohl noch Etwas fehlt.

FileWriter : FileWriterFileJava Tutorial



Java:
import java.io.FileWriter;
import java.io.IOException;
public class MainClass {
  public static void main(String[] a) {
    FileWriter writer;
    try {
      writer = new FileWriter("myFile.txt");
      char c = 'A';
      writer.write(c);
      writer.close();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

  }
}

Ich denke du siehst den Unterschied.
Vorgehen
1. Datei erstellen
2. Inhalt schreiben
3. wichtig und am besten in einen finally Block, Datei schließen
 
S

SlaterB

Gast
was steht denn im Textfeld, musst du mit so einem variablen Programm mit GUI und unnachprüfbaren Eingaben anfangen?
verwende doch direkt einen String im Programmcode, wie es in dem Beispiel steht

und natürlich extrem wichtig:
new FileWriter("myFile.txt");
ergibt Sinn, wobei die erstellte Datei dann vielleicht noch zu suchen ist, gibt viele Orte auf der Festplatte,
aber
new FileWriter("hallo, diesen Text habe ich eingetippt");
wird keine Datei erzeugen.. falls du dir das so vorstellst, im Konstruktor wird der Dateiname übergeben, nicht der Inhalt,

und das close() sollte wirklich nicht fehlen, das ist in jedem Fall eine Abweichung

----

der Code ist übrigens nicht kompilierbar, und da ein try/catch fehlt ist FileWriter vielleicht nicht die API-Klasse java.io.FileWriter?
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
nun gut

nur auf einen Teil eines Postings zu antworten ist wie immer etwas ungünstig,
andere Ideen sind ja schon genannt, es gibt aus meiner Sicht nichts neues zu sagen, wobei:
Exceptions immer ausgeben, kein leeres catch!, aber vorher war ja auch überhaupt noch kein catch da ;)

edit: ein close() ist nun ja auch dabei, ich probiere aus, schreibe evtl. gleich noch etwas

edit: nach wie vor nicht kompilierbar,
und wer weiß ob überhaupt das [c]if(cmd.equals("OK")[/c] bei dir anspringt, wie auch immer deine Konfiguration dazu aussieht,
ein einfaches System.out.println(..) im if würde dir zeigen, ob dein Code überhaupt ausgeführt wird
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
> was fehlt den?bzw wo?

setPrefferedSize() gibts nicht, event.getActionEvent() gibts nicht, schon gar nicht kommt ein String raus,
kein ActionListener geaddet und evtl. noch anderes,

------
zum Posting davor:
wieder so kurze Antwort, aber um das abzuschließen:

mit bei mir ergänzten vollständigen Code (vielleicht war das dein Ziel? ;) )
Java:
public class Test
{
    public static void main(String... args)
        throws Exception
    {
        new FileCreater(200, 200);
    }
}


class FileCreater
    extends JPanel
    implements ActionListener
{


    JFrame frame;
    FileWriter w;
    JTextField tf;
    JButton button;

    public FileCreater(int w, int h)
    {
        this.setPreferredSize(new Dimension(w, h));
        tf = new JTextField(5);
        this.add(tf);
        button = new JButton("OK");
        this.add(button);
        button.addActionListener(this);
        frame = new JFrame("FileCreater");
        frame.add(this);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public void actionPerformed(ActionEvent event)
    {
        try
        {
            w = new FileWriter(tf.getText());
            w.close();
            File f = new File(tf.getText());
            System.out.println("File da?: " + f.exists() + ", " + f.getCanonicalPath());
        }
        catch (IOException ex)
        {
            ex.printStackTrace();
        }
    }
}
erhalte ich eine Datei und als Hinweis darauf die Ausgabe:
Code:
File da?: true, C:\[...]\workspace\Test\test.txt
(Eingabe war 'test.txt')

mehr habe ich nun hoffentlich nicht beizutragen ;)
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Oben