String als Datei speichern

Justin Bailey

Grünschnabel
Hi an alle,

Ich habe einen JFileChooser und wenn ich nun einen String als Datei speichern will gehe ich so vor:

Code:
public void actionPerformed(ActionEvent a){
		    		String speich = Dateispeich(); // hier wird nur der String gefüllt
		    		int returnval = fc.showSaveDialog(frame.getContentPane());
		    		if (returnval == JFileChooser.APPROVE_OPTION){
		    			File file = new File(speich);
		    			try {
						FileOutputStream fout = new FileOutputStream(file);
						} catch (FileNotFoundException e) {
							e.printStackTrace();
						}
		    			System.err.println("saving "+file.getName());

jedoch wenn ich nun im Dialog einen Dateinamen schreibe und auf speichern drücke, wird keine Datei gespeichert.
 

zeja

Erfahrenes Mitglied
Hast du schonmal in die API reingeschaut oder in ein Buch? Da sind ja einige Fehler drin.

Erstmal: Schreib bitte Methodennamen klein.
File file = new File(speich);

Das ist schonmal nicht richtig. Du mußt File den Namen der Datei übergeben. Du erstellst ja ein neues File-Objekt und dem mußt du sagen wie denn die Datei heißen soll und nicht was reingeschrieben werden soll.

Das was du speichern willst mußt du dann auch in die Datei reinschreiben:
Java:
FileWriter w = new FileWriter(file);
w.write(speich);
w.close();//wichtig, sonst wird nichts geschrieben!
 

Justin Bailey

Grünschnabel
Jop hab ich wohl und sie lieferten mir genau die selben Antworten, die ich zwar schon wusste aber bei meinem Problem nicht halfen, vielleicht hab ich das Wesentliche undeutlich formuliert.

also das Problem jedenfalls habe ich mittlerweile gelöst mit

.getSelectedFile().getAbsolutePath();

thx.
 

zeja

Erfahrenes Mitglied
Ums nochmal deutlich zu machen:
Java:
String speich = dateispeich(); // hier wird nur der String gefüllt
int returnval = fc.showSaveDialog(frame);
if (returnval == JFileChooser.APPROVE_OPTION) {
	System.out.println("saving " + fc.getSelectedFile().getName());
	FileWriter fw;
	try {
		fw = new FileWriter(fc.getSelectedFile());
		fw.write(speich);

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

	} finally {
		if (fw != null) {
			try {
				fw.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

So muß es aussehen.

Zur Info: Wir sind in einem Forum, da ist Siezen eher unüblich ;)