如果文件已经打开而没有打开像记事本这样的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){
}
}
}
}
答案 0 :(得分:1)
在不知道更多的情况下,我假设您获得NullPointerException
,因为当按下save
(它是一个按钮,对吗?)时,该操作会创建一个新的JFileChooser
实例已选择的文件。
因此,您应该在实例变量中打开所选文件(在openFile.getSelectedFile()
分支中使用open
)并将该文件句柄传递给在FileWriter
中创建的save
。 FileAction
分支。
如果您正在重用FileAction
的同一个实例,那么您可以将引用放在那里,否则您可以将它放在其他地方(可能是一些传递给操作的容器对象),其中{{1}的多个实例有权访问。
提前一句话:抵制使用静态变量的诱惑,这不是静态变量的恰当用法。
答案 1 :(得分:1)
与您的问题无关,但您不应该使用fileWriter.write(...)。
相反,您应该使用textArea.write(...)
。有关详细信息,请参阅Text and New Lines。