我有以下代码
FileChooser choose = new FileChooser();
choose.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text doc(*.txt)", "*.txt"));
File f = choose.showSaveDialog(stage);
但是点击选择器对话框中的“保存”按钮后,创建的文件是文件格式,但不是.txt,如何修复?
答案 0 :(得分:13)
我使用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");
}
答案 1 :(得分:8)
对我来说,这是最好的,
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");
}
是,没有扩展名的文件可能不存在,但如果文件存在扩展名,则会被覆盖而没有任何警告。不期望的行为。