我如何通过JFileChooser在showSaveDialog中设置文件

时间:2014-12-22 18:12:13

标签: java jfilechooser

好吧,我用iText制作一个PDF文件,它总是很好的创建。但现在我想将生成的PDF文件设置为对话框,以便用户将其保存到他/她想要的位置。

我想我必须使用showSaveDialog来完成我想要的任务,但我尝试了一些没有任何结果的解决方案,因为我只是将主页文件夹显示为选定文件。

iText工作正常,我只需要一个代码将生成的PDF文件保存到用户想要的地方,并在用户通过对话框保存后从项目文件夹中销毁PDF文件。

这是我现在使用的代码。

JFileChooser elegidor = new JFileChooser();
File f2 = new File("filePDF.pdf");

elegidor.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

elegidor.showSaveDialog(null);

2 个答案:

答案 0 :(得分:0)

所有JFileChooser都会显示一个对话框,通过该对话框可以选择File。没有任何功能可以自动保存/加载任何文件/目录...您必须自己实现,尽管Apache Commons库和FileUtils可能对您有用

答案 1 :(得分:0)

好吧,我找到了解决问题的方法。我选择移动PDF文件,将其作为公共文件进行管理,并且可以正常工作。

JFileChooser elegidor = new JFileChooser();
        File originalFile = new File(System.getProperty("user.dir"), "filePDF.pdf");

        elegidor.setCurrentDirectory(new File(System.getProperty("user.dir")));

        elegidor.setSelectedFile(originalFile);

        elegidor.setFileSelectionMode(JFileChooser.FILES_ONLY);

        int returnVal = elegidor.showSaveDialog(null);
        File destinationFile = null;
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            destinationFile = new File(elegidor.getSelectedFile().getAbsolutePath());

            if (!destinationFile.getAbsolutePath().equals(originalFile.getAbsolutePath())) {
                InputStream in = new FileInputStream(originalFile);

                OutputStream out = new FileOutputStream(destinationFile);

                byte[] buf = new byte[1024];
                int len;
                while ((len = in.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }
                in.close();
                out.close();
            }
        }

        if (!destinationFile.getAbsolutePath().equals(originalFile.getAbsolutePath())) {
            originalFile.delete();
        }