import java.io.*;
import java.util.ArrayList;
import java.util.List;
class Student implements Serializable {
private String id;
private String name;
private int age;
private String className;
public Student(String id, String name, int age, String className) {
this.id = id;
this.name = name;
this.age = age;
this.className = className;
}
// Getters and setters
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age=" + age +
", className='" + className + '\'' +
'}';
}
}
public class Main {
public static void main(String[] args) {
List<Student> studentList = new ArrayList<>();
studentList.add(new Student("1", "Alice", 18, "Class A"));
studentList.add(new Student("2", "Bob", 20, "Class B"));
studentList.add(new Student("3", "Charlie", 22, "Class C"));
String fileName = "students.txt";
// 将 List 存储到文件
try (BufferedWriter writer = new BufferedWriter(new FileWriter(fileName))) {
for (Student student : studentList) {
writer.write(student.getId() + "," + student.getName() + "," + student.getAge() + "," + student.getClassName());
writer.newLine();
}
System.out.println("List 存储到文件成功");
} catch (IOException e) {
System.out.println("List 存储到文件失败: " + e.getMessage());
}
// 从文件读取内容并打印 List
List<Student> readList = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(",");
//检查 parts 数组的长度是否为 4,以确保读取到的行包含了正确的学生属性信息。如果长度为 4,我们可以假设这是一个正确格式的行,其中包含了学生的 id、姓名、年龄和班级。
if (parts.length == 4) {
String id = parts[0];
String name = parts[1];
int age = Integer.parseInt(parts[2]);
String className = parts[3];
Student student = new Student(id, name, age, className);
readList.add(student);
}
}
System.out.println("\n从文件读取的 List:");
for (Student student : readList) {
System.out.println(student);
}
} catch (IOException e) {
System.out.println("从文件读取内容失败: " + e.getMessage());
}
}
}
使用 BufferedWriter
和 FileWriter
将学生列表逐行写入文本文件中。每行包含学生的各个属性,用逗号分隔。
然后,我们使用 BufferedReader
和 FileReader
从文件中逐行读取内容,并根据逗号分隔的属性创建学生对象,将它们添加到读取列表中。
最后,我们遍历读取的列表并打印每个学生对象。
请确保运行代码时,文件名指定的路径下有读写权限。运行示例代码后,将会将 studentList
写入到文件中,并从文件中读取内容并打印列表中的学生对象。