Добавить расширение с помощью 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". Надеюсь, просмотр поможет вам

Другие вопросы по тегам