在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-05 18:10:27 浏览: 88
以下是Java代码实现:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class StudentInfo {
private static final String FILE_PATH = "student.txt";
public static void main(String[] args) {
Map<String, FileWriter> writerMap = new HashMap<>();
try (BufferedReader reader = new BufferedReader(new FileReader(FILE_PATH))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(" ");
String classId = parts[2];
FileWriter writer = writerMap.get(classId);
if (writer == null) {
writer = new FileWriter(classId + ".txt");
writerMap.put(classId, writer);
}
writer.write(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
for (FileWriter writer : writerMap.values()) {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
```
首先定义了一个常量 `FILE_PATH` 表示学生信息文件的路径。
然后定义了一个 `main` 方法,该方法中定义了一个 `Map` 对象 `writerMap`,用于记录每个班级对应的文件写入器。
在读取学生信息文件时,对于每一行数据,首先解析出班级编号 `classId`,然后从 `writerMap` 中获取对应的文件写入器。如果不存在,则创建新的文件写入器,并将其添加到 `writerMap` 中。然后将该行数据写入对应的文件中。
最后,在 `finally` 块中关闭所有文件写入器。
这样就能够按班级划分学生信息,并将每个班级的信息存储在不同的文件中。
阅读全文