1、编写有复制文本文件功能的记事本程序,界面参考下图,窗口中放置文本区 (JTextArea)组件: 当点击“复制文件”菜单项后,出现下面的文件对话框,选择要复制的文件。 点击“打开”按钮后,将选中的文件显示在记事本的文本区,并将该文件复制到同一 目录下的“copy.txt”文件中。使用文件字符输入、输出流进行读写。 提示: (1)输入流的源为在文件对话框中选定的文件,获取文件及其路径的参考代码如下: JFileChooser jfc=new JFileChooser(); jfc.setDialogTitle("....."); jfc.showOpenDialog(null); String file=jfc.getSelectedFile().getAbsolutePath();//用它创建输入流 (2)输出流的目的地为在选定文件同一目录下的“copy.txt”文件,创建其对应文件对象的参考代码 如下: Filedir=jfc.getCurrentDirectory(); Filecopy file=newFile(dir,"copy.txt");//用它创建输出流 (3)输入流、输出流的使用可参考群内第十章的示例程序。 (4)文本区显示内容的不断添加,可调用append方法实现,参数是String类型。
时间: 2024-02-18 11:00:56 浏览: 99
很抱歉,我之前的回答中错漏了一些信息。以下是完整的代码:
```
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class TextEditor extends JFrame {
private final JTextArea textArea;
public TextEditor() {
// 创建文本区组件
textArea = new JTextArea();
// 添加菜单栏和菜单项
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("文件");
JMenuItem copyMenuItem = new JMenuItem("复制文件");
fileMenu.add(copyMenuItem);
menuBar.add(fileMenu);
setJMenuBar(menuBar);
// 处理菜单项点击事件
copyMenuItem.addActionListener(e -> {
// 创建文件对话框
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("选择要复制的文件");
int result = fileChooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
// 获取选定文件的路径
String filePath = fileChooser.getSelectedFile().getAbsolutePath();
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
// 读取文件内容
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
String fileContent = sb.toString();
// 将文件内容显示在文本区中
textArea.setText(fileContent);
// 将文件内容写入"copy.txt"文件中
String dirPath = fileChooser.getCurrentDirectory().getAbsolutePath();
File copyFile = new File(dirPath, "copy.txt");
try (BufferedWriter writer = new BufferedWriter(new FileWriter(copyFile))) {
writer.write(fileContent);
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
// 添加文本区组件到窗口中
add(new JScrollPane(textArea), BorderLayout.CENTER);
// 设置窗口属性
setTitle("记事本");
setSize(600, 400);
setLocationRelativeTo(null); // 居中显示
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new TextEditor();
}
}
```
这个程序创建了一个文本编辑器窗口,用户可以在其中输入和编辑文本。当用户点击“复制文件”菜单项时,程序会打开文件对话框让用户选择要复制的文件。然后将所选文件的内容显示在文本区中,并将其复制到同一目录下的“copy.txt”文件中。
需要注意的是,当写入文件时,我们使用了`BufferedWriter`,这个类可以提高文件写入的效率。同时,我们使用了 Java 7 中引入的 try-with-resources 语句,可以更加方便地管理输入输出流的资源。
阅读全文