在java中实现,有一个学生信息文件student.txt,文件格式如下 103 吴勇 J179 1998-03-04 158 刘三 J176 1995-11-05 240 何坤 J176 1996-03-26 238 赵军 J179 1997-03-14 …… 分别代表学生的学号、姓名、班级、和生日 要求将学生信息按班级进行划分,将同一个班级的学生存放进不同的班级文件中(以班级名称做为文件名) 比如:在J179.txt文件中,存放 103 吴勇 J179 1998-03-04 238 赵军 J179 1997-03-14 …… 在J176.txt文件中,存放 158 刘三 J176 1995-11-05 240 何坤 J176 1996-03-26 …… 注意:有几个班级现在是未知的。 要求: 良好的编码规范,良好的命名和合理的注释
时间: 2024-02-01 22:01:55 浏览: 59
java 实现学生信息管理
以下是Java实现的代码:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
public class StudentInfo {
public static void main(String[] args) throws IOException {
HashMap<String, FileWriter> writerMap = new HashMap<>(); // 用于存放不同班级的文件写入流
BufferedReader reader = new BufferedReader(new FileReader("student.txt")); // 读取学生信息文件
String line;
while ((line = reader.readLine()) != null) { // 逐行读取学生信息
String[] info = line.split("\\s+"); // 根据空格分割学生信息
String className = info[2]; // 获取班级名称
if (!writerMap.containsKey(className)) { // 如果该班级对应的文件写入流不存在,则创建
FileWriter writer = new FileWriter(className + ".txt");
writerMap.put(className, writer);
}
FileWriter writer = writerMap.get(className); // 获取该班级对应的文件写入流
writer.write(line + "\n"); // 将该行学生信息写入对应的文件
}
reader.close(); // 关闭读取流
for (FileWriter writer : writerMap.values()) { // 关闭所有文件写入流
writer.close();
}
}
}
```
首先创建一个 `HashMap` 用于存放不同班级的文件写入流,然后读取学生信息文件,逐行读取学生信息并根据空格分割出各个信息项,获取班级名称并判断该班级对应的文件写入流是否存在,不存在则创建。获取该班级对应的文件写入流后,将该行学生信息写入对应的文件。最后关闭所有文件写入流。
需要注意的是,文件读取和写入时要进行异常处理,关闭文件流是一个好的编码规范。
阅读全文