java - 如何序列化/反序列化java中的对象列表?

标签 java class serialization deserialization

如何在 Java 中序列化可序列化类的多个对象?

例如

public class Personne implements java.io.Serializable {

    String nom;
    String date;

    Personne(String nom,String date)
    {
        this.nom=nom;
        this.date=date;
    }
}

我想创建许多对象:

Personne p1 = new  Personne("X","XX");
Personne p2 = new  Personne("Y","ZZ");
Personne p3 = new  Personne("Z","ZZ");

--> 序列化这些对象的静态函数

--> 反序列化静态函数

完整代码:

package game2;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

/**
 * 
 * @author ahmedJ
 */
public class Personne implements java.io.Serializable {

    String nom;
    String date;

    Personne(String nom, String date) {
        this.nom = nom;
        this.date = date;
    }

    public static void Serialiser(Personne sp) {

        try {
            ObjectOutputStream out = new ObjectOutputStream(
                    new FileOutputStream("Score.sp"));
            out.writeObject(sp);
            out.flush();
            out.close();
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }
    }

    public static void Deserialiser() {

        Personne a1, a2, a3;
        try {
            FileInputStream file = new FileInputStream("Score.sp");
            ObjectInputStream in = new ObjectInputStream(file);
            a1 = (Personne) in.readObject();
            a2 = (Personne) in.readObject();
            a3 = (Personne) in.readObject();

            System.out.println(a1.nom);
            System.out.println(a2.nom);
            System.out.println(a3.nom);

            in.close();
            file.close();
        } catch (Exception ex) {
            System.err.println("Erreur de lecture " + ex);
        }

    }

    public static void main(String[] sd) {
        Personne p1 = new Personne("X", "XX");
        Personne p2 = new Personne("Y", "ZZ");
        Personne p3 = new Personne("Z", "ZZ");

        Serialiser(p1);
        Serialiser(p2);
        Serialiser(p3);

        Deserialiser();
    }
}

最佳答案

使用ObjectOutputStream写和 ObjectInputStream读书。非常简单并且有效:

  ObjectOutputStream out = new ObjectOutputStream(myFileOutputStream);
  out.writeObject(p1);
  out.writeObject(p2);
  out.writeObject(p3);
  out.close();
  ....
  ObjectInputStream in = new ObjectInputStream(myFileInputStream);
  p1 = (Personne) in.readObject();
  p2 = (Personne) in.readObject();
  p3 = (Personne) in.readObject();

关于java - 如何序列化/反序列化java中的对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14655926/

相关文章:

javascript - 在 native Javascript 中查找具有类的元素的索引

java - Java中整数和字节缓冲区到输出流的序列化

php - 如何将 session 数据反序列化为 PHP 中的任意变量?

java - 将 Java 对象序列化为 Java 代码?

java - 如何在postman中将多个字符串包装成单个字符串来调用spring boot Rest API Get请求

java - 需要澄清java数组声明

java - 请求 URL 参数破坏输入流 Java

java - 覆盖共享首选项中变量的值或创建大量变量?

java - 满足字符串选择条件,不调用类

java - “Could not find or load main class”是什么意思?