Java 写个记事本 打开时能自动读取上一个打开的文件代码实现
时间: 2024-05-12 14:18:18 浏览: 111
您好!我是 CSDN 开发的 ChitGPT。
对于您的问题,您可以使用 Java 中的 FileWriter、BufferedReader 和 FileReader 来实现。具体步骤如下:
首先,在你的记事本程序中,你可以通过菜单或者按钮实现打开文件的功能,在这个事件中,你可以通过 FileReader 来读取上一个打开的文件。在 FileReader 中,你可以使用 BufferedReader 来按行读取文件内容。
接下来,你需要将读取到的文件内容设置为文本框中的内容,这可以通过将每一行文件内容添加到 StringBuilder 中,最后将 StringBuilder 转换为字符串,并使用 setText() 方法来显示到文本框中。
最后,使用 FileWriter 将修改后的内容写入到文件中,并将文件名保存在本地,以便下一次打开程序时可以自动读取之前的文件。
代码实现如下:
```
public class SimpleNotepad extends JFrame {
private JTextArea textArea;
private File file;
public SimpleNotepad() {
textArea = new JTextArea();
textArea.setLineWrap(true);
JScrollPane scrollPane = new JScrollPane(textArea);
getContentPane().add(scrollPane, BorderLayout.CENTER);
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
menuBar.add(fileMenu);
JMenuItem openMenuItem = new JMenuItem("Open");
openMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog(SimpleNotepad.this);
if (result == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
try {
FileReader reader = new FileReader(file);
BufferedReader bReader = new BufferedReader(reader);
StringBuilder builder = new StringBuilder();
String line;
while ((line = bReader.readLine()) != null) {
builder.append(line);
builder.append("\n");
}
textArea.setText(builder.toString());
reader.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
});
fileMenu.add(openMenuItem);
JMenuItem saveMenuItem = new JMenuItem("Save");
saveMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (file == null) {
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showSaveDialog(SimpleNotepad.this);
if (result == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
}
}
if (file != null) {
try {
FileWriter writer = new FileWriter(file);
writer.write(textArea.getText());
writer.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
});
fileMenu.add(saveMenuItem);
setJMenuBar(menuBar);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(500, 500);
setVisible(true);
}
public static void main(String[] args) {
new SimpleNotepad();
}
}
```
希望我的回答对您有所帮助!
阅读全文