JavaFX FileChooser未返回Windows的文件扩展名

JavaFX FileChooser未返回Windows的文件扩展名,file,javafx,filechooser,File,Javafx,Filechooser,以下代码在mac上返回文件时工作正常,因为它会自动附加 文件名的文件扩展名 但是,在windows上,我必须键入文件的扩展名作为文件名的一部分,以使其与该扩展名一起返回…即使在“另存类型为”下拉菜单中选择了该扩展名 从windows上的filechooser返回文件时,是否有方法自动将扩展名附加到名称 FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter(fileExtension.toUpperCas

以下代码在mac上返回文件时工作正常,因为它会自动附加 文件名的文件扩展名

但是,在windows上,我必须键入文件的扩展名作为文件名的一部分,以使其与该扩展名一起返回…即使在“另存类型为”下拉菜单中选择了该扩展名

从windows上的filechooser返回文件时,是否有方法自动将扩展名附加到名称

FileChooser.ExtensionFilter extFilter = new   FileChooser.ExtensionFilter(fileExtension.toUpperCase()+" files(*."+fileExtension+")", "*."+fileExtension);
                fileChooser.getExtensionFilters().add(extFilter);

                //Show save file dialog 
                final File file = fileChooser.showSaveDialog(MyStage.this);

我遇到了同样的问题。我的解决方案是创建一个新文件,并将文件扩展名作为字符串附加到文件构造函数中

如果希望用户能够选择并覆盖现有文件,请确保并添加一个检查,以确保初始保存文件在附加之前不包含特定的扩展名,否则您将得到类似“test.xls.xls”的结果


如果用户已在文件名中键入“.xls”,会发生什么情况?分机会加倍吗?是的,它会加倍分机。要避免这种情况,请在if语句块中使用add扩展名,如:if(!save.getPath().toLowerCase().endsWith(“.xls”){save=new File(save.getPath()+”.xls”);}这也不能完全正常工作-因为在这种情况下,文件选择器无法首先进行正确的覆盖检查-因此用户可能会无意中覆盖他们不想覆盖的文件。您还需要验证该文件是否不存在(如果您重命名了它),然后提示用户…这是一个难题-发布为bug on
FileChooser fc = new FileChooser();
    FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("XLS File (*.xls)", "*.xls");

    fc.getExtensionFilters().add(extFilter);

    File save  = fc.showSaveDialog(stage);

    save = new File(save.getAbsolutePath()+".xls");

    FileOutputStream fileOut = new FileOutputStream(save);