将 JFileChooser 与 PDFBox 一起使用时,文件不会保存为 pdf,但保存时没有扩展名

When using JFileChooser with PDFBox, the file does not save as a pdf but it saves with no extension

调用JFileChooser时,保存的文件不是pdf。换句话说,我调用 JFileChooser 并用某个名称保存它。然后,当我转到该位置时,该文件没有 .pdf 扩展名,我尝试使用 .getName() 然后向其添加 .pdf 扩展名并将其设置为等于 .getName() 但这不起作用。我该如何解决这个问题?

我为此创建了一个 JavaFX 项目,那里的 window 只显示一个按钮,单击该按钮时会调用方法 "methodActivate"。

package application;


import javafx.application.Application;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;

import java.io.File;
import java.io.IOException;

import javax.swing.JFileChooser;

import org.apache.pdfbox.pdmodel.*;

public class Main extends Application {

    @FXML
    private Button button;

    @Override
    public void start(Stage primaryStage) {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("\Pdfbox.fxml"));
            Scene scene = new Scene(root,500,300);
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }

    @FXML
    public void methodActivate() throws IOException{

         PDDocument doc = 
         new PDDocument();
            doc.addPage(new PDPage());
            boolean bool = false;
            try{
                JFileChooser fileChooser = new JFileChooser();
                  File file = fileChooser.getSelectedFile();

                  doc.save(file);
                  doc.close();
                }
                doc.close();
            } catch (Exception io){
                System.out.println(io);
            }

    }

}

如果您在 JFileChooser window 中输入不带 .pdf 的名称 "myPdf",那么它将使用该名称保存。 JFileChooser 不会自动附加文件类型,所以如果这是您需要的,那么您可以检查它

public File checkFileName(File file) {
    if (!file.getAbsolutePath().toLowerCase().endsWith(".pdf")) {
        return new File(file.getAbsolutePath() + ".pdf");
    } else {
        return file;
    }
}

有关 JFileChooser

的详细信息,请参阅 javadoc