我的程序中存在一个最大的问题。我已经创建了“保存”按钮,但如果.txt文件是新的,则会保存(然后该按钮执行“SaveAs”功能)。但是当我打开文件,然后键入一些内容并尝试保存并且它不会保存:S。任何人都可以帮助我吗?
以下是代码:
fileSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(currentFile == null) {
int saveResult = fileSelect.showSaveDialog(null);
if(saveResult == fileSelect.APPROVE_OPTION) {
saveFile(fileSelect.getSelectedFile(), field.getText());
} else {
saveFile(currentFile, field.getText());
}
}
}
});
public void saveFile(File file, String contents) {
BufferedWriter writer = null;
String filePath = file.getPath();
if(!filePath.endsWith(".txt")) {
filePath += ".txt";
}
try {
writer = new BufferedWriter(new FileWriter(filePath));
writer.write(contents);
writer.close();
field.setText(contents);
setTitle("Editex - " + filePath);
currentFile = file;
} catch (Exception e) {
}
}
答案 0 :(得分:2)
当currentFile!= null时,你没有处理,这是我假设你尝试保存已经有文件名的文件的情况。
做这样的事情:
if(currentFile == null) {
// Handle if new file
} else {
// Handle an existing file
}
移动
saveFile(currentFile, field.getText());
进入上面的else部分if else。
目前你在if(currentFile == null)
内有这个,并且这不是正确的地方,因为你在这里打电话给saveFile(null, field.getText())
。
另外
catch(Exception e) {
}
很糟糕,永远不会吞下异常并且不做任何事情,你永远不会知道异常是否发生,什么也不会发生。