1.定义一个学生类,
一个对象如果想要被序列化,该对象必须实现Serializable接口,Serializable只是一个标记接口,实现该接口,不需要重写任何方法。
import java.io.Serializable;
/*
一个对象要想被序列化,该对象所属的类必须必须实现Serializable 接口
Serializable是一个标记接口,实现该接口,不需要重写任何方法
*/
public class Student implements Serializable {
//给对象所属的类加一个serialVersionUID为了防止我们修改了对象所处的文件而产生错误
private static final long serialVersionUID = 42L;
private String name;
private int age;
private int ID;
private String department;
public Student() {
}
public Student(String name, int age, int ID, String department) {
this.name = name;
this.age = age;
this.ID = ID;
this.department = department;
}
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 int getID() {
return ID;
}
public void setID(int ID) {
this.ID = ID;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", ID=" + ID +
", department='" + department + '\'' +
'}';
}
}
2.通过键盘输入学生信息,在将学生序列化存储在文件中,如果想要获得学生信息,可以随时从文件中获取。
import java.io.*;
import java.util.Scanner;
public class StudentDemo1 {
public static void main(String[] args) throws IOException, ClassNotFoundException {
//创建对象序列化流
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("java实验\\student.txt"));
Scanner sc=new Scanner(System.in);
System.out.println("您想输入几个学生信息");
int n=sc.nextInt();
for (int i=0;i<n;i++){
//创建学生对象
Scanner sc1=new Scanner(System.in);
Scanner sc2=new Scanner(System.in);
System.out.println("请输入第"+(i+1)+"个学生姓名");
String name=sc1.nextLine();
System.out.println("请输入第"+(i+1)+"个学生年龄");
int age=sc2.nextInt();
System.out.println("请输入第"+(i+1)+"个学生ID");
int ID=sc2.nextInt();
System.out.println("请输入第"+(i+1)+"个学生职位");
String department=sc1.nextLine();
//创建学生对象
Student s=new Student(name,age,ID,department);
//将指定的对象写入ObjectOutputStream
oos.writeObject(s);
}
//释放资源
oos.close();
//ObjectInputStream反序列化先前使用ObjectOutputStream编写的原始数据和对象
//创建对象反序列化流
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("java实验\\student.txt"));
//Object readObject():从ObjectInputStream读取一个对象
for(int i=0;i<n;i++) {
Object obj = ois.readObject();
Student s = (Student) obj;
System.out.println(s);
}
//关闭流,释放资源
ois.close();
}
}