可以打开文件中的数据,用制表符分割,可以使里面的数据按照需求改动。
具体题目如下:
假设已经有一个文本文件中存放着职工的工资记录。每个职工的记录包含姓名、工资、津贴三项。 每条记录可以存放于一行(三项之间的间隔符可以自己决定),也可以将每条记录的三项依次分别存放在 文本文件中的每一行。请设计一个程序,可以让用户选择打开这个文件查看其内容,并可以让用户选择 把每个职工的工资增加 10%之后又存回原来的文件。注意,职工工资记录的条数可能成百上千条甚至更多, 要能通过你所设计的程序,批量地一次性修改所有职工工资记录。
附源码:
package 输入输出流与文件操作;
/**
* @author :梁达林
* @project :职工数据处理
* @creat time:2019-11-21-18:57
*/
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class Example6_2 {
public static void main(String args[]) {
File4Frm file4Frm = new File4Frm();
}
}
class File4Frm extends Frame implements ActionListener {
FileDialog sv, op;
JButton button1, button2, button3, button4;
JTextArea textArea = new JTextArea();
File4Frm() {
super("工资记录修改器");
setLayout(null);
setBackground(Color.cyan);
setSize(600, 300);
setVisible(true);
button1 = new JButton("打开");
button2 = new JButton("保存");
button3 = new JButton("关闭");
button4 = new JButton("修改");
textArea = new JTextArea("姓名\t工资\t津贴\n");
add(button1);
add(button2);
add(button3);
add(button4);
add(textArea);
textArea.setBounds(30, 50, 460, 220);
button1.setBounds(520, 60, 60, 30);
button2.setBounds(520, 120, 60, 30);
button3.setBounds(520, 180, 60, 30);
button4.setBounds(520, 240, 60, 30);
sv = new FileDialog(this, "保存", FileDialog.SAVE); //保存功能
op = new FileDialog(this, "打开", FileDialog.LOAD);//打开功能
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
addWindowListener(new WindowAdapter() {//定义事件适配器实现图形界面窗口的关闭功能
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e) {//界面上的事件处理
if (e.getSource() == button1) {
String str;
op.setVisible(true);
try {//将文件打开读取到界面上的TextArea组件中显示出来
File f1 = new File(op.getDirectory(), op.getFile());
FileReader fr = new FileReader(f1);
BufferedReader br = new BufferedReader(fr);
textArea.setText("");
while ((str = br.readLine()) != null) textArea.append(str + '\n');
fr.close();
} catch (Exception e1) {
}
}
if (e.getSource() == button2) {//如果点击的是save按钮
sv.setVisible(true);
try {//将TextArea中的内容写入到文件中保存
File fl = new File(sv.getDirectory(), sv.getFile());
FileWriter fw = new FileWriter(fl);
BufferedWriter bw = new BufferedWriter(fw);
String gt = textArea.getText();
bw.write(gt, 0, gt.length());
bw.flush();
fw.close();
} catch (Exception e1) {
}
}
if (e.getSource() == button3) {//如果点击的是close按钮
System.exit(0);
}
if (e.getSource() == button4) {//如果点击的是修改按钮
String gt = textArea.getText();
String s[];
s = gt.split("\t|\n");
textArea.setText("姓名\t工资\t津贴\n");
try {
for (int i = 1; i < s.length; i++) {
s[3 * i + 1] = String.valueOf((int) (Integer.parseInt((s[3 * i + 1])) * 1.1));
textArea.append(s[3 * i + 0] + "\t");
textArea.append(s[3 * i + 1] + "\t");
textArea.append(s[3 * i + 2] + "\n");
}
} catch (Exception e1) {
}
}
}
}