打开多种文件类型没有问题,但我希望该选项能够保存多种文件类型。我无法弄清楚如何获得用户选择保存其文件类型的选项。
这是我的代码:
//.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
}
}
我在论坛上搜索了解决方案,但我只找到了打开多种文件类型的解决方案,而不是保存多种文件类型。
答案 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")
即可。您还可以将文件过滤器创建为局部变量,然后将它们与选定的变量进行比较。