5

我有以下代码

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

但是在选择器对话框中单击“保存”按钮后,创建的文件是文件格式,而不是 .txt,如何解决这个问题?

4

2 回答 2

14

我在使用 JavaFX 2.2 时遇到了同样的问题。我正在使用以下解决方法:

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");
}
于 2012-11-02T14:35:24.570 回答
9

对我来说效果最好,

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.");
  }
}

像这样手动替换扩展的问题:

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

也就是说,没有扩展名的文件可能不存在,但如果文件存在扩展名,它会被覆盖而没有任何警告。不是预期的行为。

于 2014-03-20T10:32:18.643 回答