Set default saving extension with JFileChooser

后端 未结 5 1088
借酒劲吻你
借酒劲吻你 2021-02-07 10:12

I\'m trying to save a file using JFileChooser. However, I seem to be having some trouble with it. Here\'s my code:

    if (e.getSource() == saveMenu         


        
5条回答
  •  醉话见心
    2021-02-07 10:43

    As you've noticed, JFileChooser doesn't enforce the FileFilter on a save. It will grey-out the existing non-XML file in the dialog it displays, but that's it. To enforce the filename, you have to do all the work. (This isn't just a matter of JFileChooser sucking -- it's a complex problem to deal with. Your might want your users to be able to name their files xml.xml.xml.xml.)

    In your case, I recommend using FilenameUtils from Commons IO:

    File file = chooser.getSelectedFile();
    if (FilenameUtils.getExtension(file.getName()).equalsIgnoreCase("xml")) {
        // filename is OK as-is
    } else {
        file = new File(file.toString() + ".xml");  // append .xml if "foo.jpg.xml" is OK
        file = new File(file.getParentFile(), FilenameUtils.getBaseName(file.getName())+".xml"); // ALTERNATIVELY: remove the extension (if any) and replace it with ".xml"
    }
    

    There's also some ideas for what to do if you want multiple types in the save dialog here: How to save file using JFileChooser?

提交回复
热议问题