在JFileChooser Java中保存已打开的文件?

时间:2011-12-31 21:04:47

标签: java swing jfilechooser

如果文件已经打开而没有打开像记事本这样的FileChooser dialog,如何保存文件? 我花了很多时间才弄明白。我在网上搜索过但找不到可以帮助我的东西。

先谢谢

我的问题在下面的代码中。新编辑未保存。我打开了同一个文件,没有保存(我没有更新)

 fileWriter = new BufferedWriter(new
 FileWriter(openFile.getSelectedFile().getPath()));

private class FileAction implements ActionListener{
    public void actionPerformed(ActionEvent e){
        //JOptionDialog
        JFileChooser openFile = new JFileChooser();
        openFile.setFileFilter(new txtFilter());
        if(e.getSource() == open ){

            int openOption = openFile.showOpenDialog(frame);

                    textArea.setText(""); //clearing the Text_AREA before opening the new file

                try{
                    Scanner scan = new Scanner(new FileReader(openFile.getSelectedFile().getPath()));
                    while(scan.hasNext())
                        textArea.append(scan.nextLine() + "\n");

                }catch(Exception ex){
                    //ShowDialogBox dialogBox = new ShowDialogBox();
                    JOptionPane.showMessageDialog(frame,"Please choose .txt File only");
                }
            }
        } else if( e.getSource() == save){  //SAVE_BUTTON

            try{
                BufferedWriter fileWriter = new BufferedWriter(new FileWriter(openFile.getSelectedFile().getPath())); //(This does not save at all I opened the file again and still as it was before editing)
                fileWriter.write(textArea.getText());
                fileWriter.close();
            }catch(Exception ex){

            }


        }


    }
}

2 个答案:

答案 0 :(得分:1)

在不知道更多的情况下,我假设您获得NullPointerException,因为当按下save(它是一个按钮,对吗?)时,该操作会创建一个新的JFileChooser实例已选择的文件。

因此,您应该在实例变量中打开所选文件(在openFile.getSelectedFile()分支中使用open)并将该文件句柄传递给在FileWriter中创建的saveFileAction分支。

如果您正在重用FileAction的同一个实例,那么您可以将引用放在那里,否则您可以将它放在其他地方(可能是一些传递给操作的容器对象),其中{{1}的多个实例有权访问。

提前一句话:抵制使用静态变量的诱惑,这不是静态变量的恰当用法。

答案 1 :(得分:1)

与您的问题无关,但您不应该使用fileWriter.write(...)。

相反,您应该使用textArea.write(...)。有关详细信息,请参阅Text and New Lines