对象Java的序列化

时间:2015-05-18 21:22:31

标签: java serialization deserialization java-io

我想序列化/反序列化一个对象。代码运行但是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文件中的结果是:

  

¬ísrtp.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问题吗?

1 个答案:

答案 0 :(得分:2)

这就是实际序列化的工作原理,它不会写一个可读的文本文件,而是缩短了对象字段的版本。