对象的序列化 Java

Serialisation of an Object Java

我想serialise/deserialise一个对象。代码运行,但 txt 中的结果是垃圾。

这是代码:

public class Test implements Serializable {
    public String[] nom;


    public Test() {

        nom = new String[5];
        nom[0] = "Coucou";
        nom[1] = "Je suis un tab de String";
        nom[2] = "Je vais me faire serialiser";
        nom[3] = "Et deserialiser aussi !";
        nom[4] = "Je suis le roi du monde !";
    }

}

主要是:

    Test test = new Test();
    File f = new File ("nom.txt");


  try (ObjectOutputStream oos = new ObjectOutputStream (new FileOutputStream (f))) {
            oos.writeObject (test);
    }
    catch (IOException exception)
    {
        System.out.println ("Erreur lors de l'écriture : " + exception.getMessage());
    }

    ObjectInputStream ois =  new ObjectInputStream(new FileInputStream(f)) ;

    Test test2 = (Test)ois.readObject();

    System.out.println(test2.nom[0]);
    System.out.println(test2.nom[1]);
    System.out.println(test2.nom[2]);
    System.out.println(test2.nom[3]);
    System.out.println(test2.nom[4]);

txt 文件中的结果是:

¬í sr tp.java.Testp32< [ nomt [Ljava/lang/String;xpur [Ljava.lang.String;­ÒVçé{G xp t Coucout Je suis un tab de Stringt Je vais me faire serialisert Et deserialiser aussi !t Je suis le roi du monde !

控制台显示了反序列化的结果,非常完美:

Coucou 
Je suis un tab de String 
Je vais me faire serialiser 
Et deserialiser aussi ! 
Je suis le roi du monde !

有什么想法吗?是 UTF-8 问题吗?

这就是序列化的实际工作方式,它不会编写可读的文本文件,而是编写对象字段的简短版本。