JFileChooser,保存多种文件类型

时间:2016-02-24 22:32:33

标签: java file types filepath jfilechooser

打开多种文件类型没有问题,但我希望该选项能够保存多种文件类型。我无法弄清楚如何获得用户选择保存其文件类型的选项。

这是我的代码:

    //.txt and .encm files are allowed
    final JFileChooser txtOrEncmChooser = new JFileChooser(new File(System.getProperty("user.dir")));


    //only allow user to use .txt and .encm files
    txtOrEncmChooser.addChoosableFileFilter(new FileNameExtensionFilter("Encrypted Data File (*.encm)", "encm"));
    txtOrEncmChooser.addChoosableFileFilter(new FileNameExtensionFilter("Text File (*.txt)", "txt"));
    txtOrEncmChooser.setAcceptAllFileFilterUsed(false);

        //displays save file dialog
        int returnVal = txtOrEncmChooser.showSaveDialog(FileEncryptionFilter.this);

        //use chose to save file
        if (returnVal == JFileChooser.APPROVE_OPTION)
        {
                //selects file
                File fileName = txtOrEncmChooser.getSelectedFile();

        /****The problem is here, how do I figure out what file type the user selected?****/

                    if .txt is selected{
                    String filePath = fileName.getPath() + ".txt"; //file path
                    }
                    else if .encm is selected
                    {
                    String filePath = fileName.getPath() + ".encm"; //file path
                    }
        }

我在论坛上搜索了解决方案,但我只找到了打开多种文件类型的解决方案,而不是保存多种文件类型。

1 个答案:

答案 0 :(得分:1)

https://docs.oracle.com/javase/7/docs/api/javax/swing/JFileChooser.html#getFileFilter()

FileNameExtensionFilter f = (FileNameExtensionFilter) txtOrEncmChooser.getFileFilter();

由于getExtensions()返回一个数组,因此您必须遍历所有扩展。如果您确定它只包含一个元素,当然,您不需要这样做。例如,只需检查f.getExtensions()[0].equals("txt")即可。您还可以将文件过滤器创建为局部变量,然后将它们与选定的变量进行比较。