我正在使用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。我搜索了互联网,没有人遇到同样的问题。
答案 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);