2012-05-09 8 views
5

Ich habe den folgenden Codeanfängliche Dateierweiterung Set Beim Speichern der Datei

FileChooser choose = new FileChooser(); 
choose.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text doc(*.txt)", "*.txt")); 
File f = choose.showSaveDialog(stage);

Aber nach im Auswahldialog auf die Schaltfläche Speichern klicken, erstellte Datei im Dateiformat ist, aber nicht in .txt, wie man repariere das?

Antwort

10

Ich habe das gleiche Problem mit JavaFX 2.2. Ich verwende folgende Abhilfe:

FileChooser choose = new FileChooser(); 
choose.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text doc(*.txt)", "*.txt")); 
File f = choose.showSaveDialog(stage); 
if(!f.getName().contains(".")) { 
    f = new File(f.getAbsolutePath() + ".txt"); 
} 
+3

Dieser Hack ist nicht abgeschlossen, der FileChooser prüft auf das Vorhandensein der Datei und wanrs, wenn es intern existiert und alles ohne die Erweiterung getan wird, wird es nach dem falschen Dateinamen suchen. –

6

Für mich ist es am besten funktioniert, um

FileChooser choose = new FileChooser(); 
choose.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text doc(*.txt)", "*.txt")); 
choose.setInitialFileName("*.txt"); 
File file = choose.showSaveDialog(stage); 
if (file != null) { 
    if (file.getName().endsWith(".txt")) { 
    // do the operation with the file (i used a builder) 
    } else { 
    throw new Exception(file.getName() + " has no valid file-extension."); 
    } 
} 

Das Problem der Erweiterung manuell wie das Ersetzen:

if(!f.getName().contains(".")) { 
    f = new File(f.getAbsolutePath() + ".txt"); 
} 

ist, dass ein Datei ohne eine Erweiterung möglicherweise nicht vorhanden, aber wenn die Datei mit der Erweiterung vorhanden war, wurde es ohne Warnung überschrieben. nicht erwartetes Verhalten.

Verwandte Themen