题目要求:
在"D:/mydat"目录下有一个学生名单文件(文本)"student2006.txt",里面记载了
若干学生信息,每个学生信息单独一行,每行信息共有五列,每列之间用逗号分开,
其每列含义按顺序是:学号 姓名 出生日期 性别 专业,
要求:将所有专业为"MATH"的学生专业改为"APMA", 并重新保存为
"student2006-1.txt"文件.
student2006.txt文件中的内容为:
200607012,张华,1980.07.23,M,CS
200607016,王海,1980.08.11,M,MATH
200607078,丁美,1980.10.10,F,MATH
200607106,贺璐璐,1981.01.11,F,CS
大致思路:
新建一个要求的文件,把原来的文件中的数据提取出来
并把专业为MATH改为APMA,并存放到新建的文件当中
在取新建的文件中取查询想要查询的学号,并把相应的信息给匹配出来
代码实现
package cn.kong;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class studentTest {
static List<Student> list = new ArrayList<Student>();//泛型
public static void main(String[] args) throws Exception{
CopyFile("D:\\mydat\\student2006.txt", "D:\\mydat\\student2006-1.txt");
System.out.println("请输入要查询的学号");
Scanner n = new Scanner(System.in);
String p = n.nextLine();
research("d:\\mydat\\student2006-1.txt", p);
n.close();
}
static void CopyFile(String f1, String f2) throws IOException { //修改数据并把数据复制到另一个文件的方法
File file1 = new File(f1);
if (!file1.exists()) {
System.out.println("文件不存在");
System.exit(0);
}
File file2 = new File(f2);
String s = null;
String[] str = new String[20];
//从文件中取数据
FileReader in = new FileReader(file1);
BufferedReader fin = new BufferedReader(in);
//把数据放到一个新建的文件中去
FileWriter out = new FileWriter(file2);
BufferedWriter fout = new BufferedWriter(out);
while ((s = fin.readLine()) != null) {
str = s.split(",");//拆分字符串,以,为标志,分开一个放进去数组中一个,这里只需要字符串变量就可以达到这样的效果
for (int i = 0; i < str.length; i++) {
if (str[4].equals("MATH")) {
str[4] = "APMA";
}
}
//把刚取出的一行字符串放到新建的文本文件中去
for (int i = 0; i < str.length; i++) {
fout.write(str[i]);
if (i < str.length - 1) {
fout.write(',');//给文件一行中的某个单词增加逗号
}
}
fout.newLine();//给新建的文件增加一行,以便于下次循环放另一行数据
}
System.out.println("修改数据并把数据放到新的文件的操作成功啦");
fout.flush();//刷新
fin.close();
fout.close();
}
static void research(String file, String num) throws IOException {
File f = new File(file);
if (!f.exists()) {
System.out.println("文件不存在");
System.exit(0);
}
//从新建的文件中取数据,来进行匹配
FileReader fin = new FileReader(f);
BufferedReader finn = new BufferedReader(fin);
String s = null;
String[] str = new String[20];
while ((s = finn.readLine()) != null) {
Student stu = new Student();
str = s.split(",");//单词分割
stu.setNum(str[0]);
stu.setName(str[1]);
stu.setCsrq(str[2]);
stu.setSex(str[3]);
stu.setZy(str[4]);
list.add(stu);
}
for (Student stu : list) {
if (stu.num.equals(num)) {
System.out.println("匹配成功,找到了");
System.out.print("姓名:" + stu.name + "\t" + "学号:" + stu.num);
}
}
System.out.println("很抱歉,没匹配成功,该文件没有你想要找的信息");
finn.close();
}
}
class Student{
String num;
String name;
String csrq;
String sex;
String zy;
public void setZy(String zy) {
this.zy = zy;
}
public void setCsrq(String csrq) {
this.csrq = csrq;
}
public void setNum(String num) {
this.num = num;
}
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
}
运行结果
文件编辑之前
文件编辑之后
运行代码