如何使用JFileChooser.showSaveDialog保存文件?

时间:2014-03-07 21:35:50

标签: java eclipse text text-editor notepad

我正在使用Java编写文本编辑器,我的保存功能不能按照我想要的方式工作。这是我用来保存文件的代码:

public void actionPerformed(ActionEvent event) {
        String filename = JOptionPane.showInputDialog("Name this file");
        JFileChooser savefile = new JFileChooser();
        savefile.setSelectedFile(new File(filename));
        savefile.showSaveDialog(savefile);
        BufferedWriter writer;
        int sf = savefile.showSaveDialog(null);
        if(sf == JFileChooser.APPROVE_OPTION){
            try {
                writer = new BufferedWriter(new FileWriter(filename,
                        false));
                text.write(writer);
                writer.close();
                JOptionPane.showMessageDialog(null, "File has been saved","File Saved",JOptionPane.INFORMATION_MESSAGE);
                // true for rewrite, false for override

            } catch (IOException e) {
                e.printStackTrace();
            }
        }else if(sf == JFileChooser.CANCEL_OPTION){
            JOptionPane.showMessageDialog(null, "File save has been canceled");
        }
    }

当我点击保存按钮时,弹出窗口,然后我选择要保存的位置。单击“保存”后,再次打开窗口并保存到Eclipse Workspce。我搜索了互联网,没有人遇到同样的问题。

2 个答案:

答案 0 :(得分:1)

我认为问题在于你永远不会take the selected file。您只需在硬编码名称后创建的文件上设置SelectedFile。之后,您在这些文件上实例化一个编写器,但问题是没有采用所选文件。实际上,您正在写入的文件是File(filename),它是在项目的根目录中创建的。

尝试将此添加到您的try块:

writer = new BufferedWriter(new FileWriter(saveFile.getSelectedFile()));

注意到这一点:

writer = new BufferedWriter(new FileWriter(filename,
                    false));

答案 1 :(得分:1)

这是因为你写了:

savefile.showSaveDialog(savefile); 

还有:

 int sf = savefile.showSaveDialog(null);

(的两次)。你只需要删除:

savefile.showSaveDialog(savefile);