如何保存,另存为Java?

时间:2014-02-07 13:44:46

标签: java swing save actionlistener

您好,我的文本编辑器就像程序一样有点问题。我希望仅在调用另存为时保存我的保存功能,并且如果调用保存它将文本从JTextArea附加到由另存为创建的文件。我正在使用JMenuItems中的ActionListeners来调用Save和Save As Actions。以下是另存为的代码:

FileDialog fileDialogSave = new FileDialog(frame, "Save", FileDialog.SAVE);
fileDialogSave.setVisible(true);        
String userProjectSavePath = fileDialogSave.getDirectory() + fileDialogSave.getFile();
File userProjectSave = new File(userProjectSavePath);
try (PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(userProjectSave, true)))) {
userProjectSave.createNewFile();
String userProjectNameToSave = codeArea.getText();
out.println(userProjectNameToSave);
} catch (IOException e1) {
    e1.printStackTrace();
}

保存和另存为都嵌套在static class ActionSaveAs implements ActionListener { public void actionPerformed(ActionEvent e) { ... } }

问题是我无法访问Save类中的String userProjectSavePath,因此我无法将新文本附加到与另存为中相同的文件中。

1 个答案:

答案 0 :(得分:1)

相反,如果saveDocument()saveDocumentAs(),请让您的名义currentFile方法调用null。以下大纲提出了Charles Bell的HTMLDocumentEditor采用的方法,引用here

public void saveDocument() {
    if (currentFile != null) {
        // Save in currentFile
    } else {
        saveDocumentAs();
    }
}

public void saveDocumentAs() {
    // Check before overwriting existing file
}