Добавить расширение с помощью jFileChooser
Я создаю программу, которая будет создавать файлы с различными расширениями. Для этого я использую JFileChooser
, Я установил FileFilter
принимать только желаемые расширения, но когда я выбираю одно, мне все равно нужно добавить расширение в имя файла. Как я могу решить это? Большое спасибо!
1 ответ
Вы должны добавить расширение самостоятельно после того, как пользователь закроет диалог.
В этом примере пользователь может указать файл, заканчивающийся на ".foo" или ".bar", и добавит это расширение, если пользователь этого не сделал.
JFileChooser fileChooser = new JFileChooser();
fileChooser.setMultiSelectionEnabled(false);
fileChooser.removeChoosableFileFilter(fileChooser.getAcceptAllFileFilter());
fileChooser.setFileFilter(new FileNameExtensionFilter("Files ending in .foo", "foo"));
fileChooser.setFileFilter(new FileNameExtensionFilter("Files ending in .bar", "bar"));
int option = fileChooser.showSaveDialog(null);
if (option == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
if (file!=null) {
FileFilter fileFilter = fileChooser.getFileFilter();
if (fileFilter instanceof FileNameExtensionFilter && ! fileFilter.accept(file)) {
// if the filter doesn't accept the filename, that must be because it doesn't have the correct extension
// so change the extension to the first extension offered by the filter.
FileNameExtensionFilter fileNameExtensionFilter = (FileNameExtensionFilter) fileFilter;
String extension = fileNameExtensionFilter.getExtensions()[0];
String newName = file.getName() + "." + extension;
file = new File(file.getParent(), newName);
}
System.out.println("The selected file is: " + file.getAbsolutePath());
}
}
Для этого вы должны получить файловый фильтр, выбранный пользователем после того, как он нажмет кнопку проверки JFileChooser, и сравнить описание файлового фильтра со списком ваших расширений перед инициализацией файлового объекта с указанным расширением в вашем коде, если есть совпадение. Не знаю, поймете ли вы меня.
Modelexcel model = new Modelexcel();
JFileChooser selectFile = new JFileChooser();;
File file;
JButton btnExporterVersExcel = new JButton("Exporter vers Excel");
btnExporterVersExcel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if(selectFile.showDialog(null, "Exporter")==JFileChooser.APPROVE_OPTION) {
String extension=selectFile.getFileFilter().getDescription();
if(extension.contains("(*.xlsx)")) {
file= new File(selectFile.getSelectedFile()+".xlsx");
}else if(extension.contains("(*.xls)")){
file= new File(selectFile.getSelectedFile()+".xls");
}
if(file.getName().endsWith("xls") ||
file.getName().endsWith("xlsx")) {
JOptionPane.showMessageDialog(null, model.Export(file, table));
}else {
JOptionPane.showMessageDialog(null, "Format invalid");
}
}
}
});
Это фрагмент моего кода для сохранения файлов в форматах ".xls" и ".xlsx". Надеюсь, просмотр поможет вам