字符输出流练习从自定义对象集合中将对象信息写入到文件中
自定义学生类:
import java.util.Objects; public class Student { private String name; private int age; @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Student student = (Student) o; return age == student.age && Objects.equals(name, student.name); } @Override public int hashCode() { return Objects.hash(name, age); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } }
测试类:
import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.ArrayList; import java.util.InputMismatchException; import java.util.Scanner; public class Test11 { public static void main(String[] args) { //需求说明:从控制台接收3名学员的信息,每条信息存储到一个Student对象中, // 将多个Student对象存储到一个集合中。输入完毕后,将所有学员信息存储到文件Student.txt中。 // 每名学员信息存储一行,多个属性值中间用逗号隔开。 //创建扫描输入 Scanner sc = new Scanner(System.in); //定义存储学生对象的集合 ArrayList<Student> stuList = new ArrayList<>(); for (int i = 0; i < 3; i++) {//循环添加学生对象到集合中 System.out.println("请输入学生姓名: "); String str = sc.next(); System.out.println("请输入学生年龄: "); int age ; while (true) { try { age = sc.nextInt(); } catch (InputMismatchException exception) { System.out.println("您输入的年龄不合法,请重输人"); sc = new Scanner(System.in); continue; } if (age < 0 || age > 110) { sc = new Scanner(System.in); System.out.println("您输入的年龄不合法,请重输人"); continue; } break; } stuList.add(new Student(str, age)); } //创建输出流 try (Writer out = new FileWriter("d:\\Student.txt", true)) { //遍历数组拿到数组中元素的属性按要求写入到文件中 for (Student stu : stuList) { String name = stu.getName(); out.write(name+","); String age = stu.getAge() + ""; out.write(age+"\r\n");//输出年龄后添加换行 } } catch (IOException e) { e.printStackTrace(); } } }
控制台效果:
文件中的内容: