如何序列化和反序列化 arrayList 对象



在我的程序中,输入对象存储在arrayList中。问题是关闭应用程序后丢失了所有数据。

这就是为什么我想更进一步将这些对象存储在磁盘上,以便在关闭应用程序后不会丢失任何数据。最终我想阅读该文件。我正在研究的课程是:ReaderWriter

[我知道在写入和读取文件之前,我必须序列化和反序列化对象。我不知道该怎么做。我在网上搜索过,大多数情况下,他们都是在主方法中完成的。但就我而言,我对setObject和getObject有不同的类,这就是我感到困惑的原因。

人物信息:

public static void main(String[] args) {
    System.out.println("WELCOME TO MY PERSONAL DATABASEnn");
    Scanner input = new Scanner(System.in);
    List<PeopleObject> peopleObject = new ArrayList<PeopleObject>();
    String name;
    int age;
    int option;
    while (true) {
        System.out.println("1. Enter infon"
                + "2. Print them outn"
                + "3. Exitn"
                + "*********"
                + "*********n");
        option = input.nextInt();
        input.nextLine();
        switch (option) {
            case 1:
                PeopleObject p_object = new PeopleObject();
                System.out.println("Enter your friends name:");
                p_object.setName(input.nextLine());
                System.out.println("Enter age: ");
                p_object.setAge(input.nextInt());
                peopleObject.add(p_object);
                System.out.println("n");
                break;
            case 2:
                System.out.println("Name tage");
                for (PeopleObject printPeopleObject : peopleObject) {
                    System.out.println(printPeopleObject);
                }
                System.out.println("nn");
                break;
            case 3:
                return;
        }
    }
}

人物对象:

private String name;
private int age;
public PeopleObject() {
    this.name = null;
    this.age = 0;
}
public void setName(String name) {
    this.name = name;
}
public void setAge(int age) {
    this.age = age;
}
@Override
public String toString() {
    return name + "tt" + age;
}

读者作家:

public class ReaderWriter {
        //I want to use this class for serialization and deserialization object
        //writing those data into file and reading them
    }

使用 ObjectOutputStreamObjectInputStream

PeopleObject必须实现Serializable

ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream("name"));
stream.writeObject(yourArrayList);
ObjectInputStream stream = new ObjectInputStream(new FileInputStream("name"));
yourArrayList = (List<PeopleObject>)stream.readObject();

最新更新