对象的序列化 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 问题吗?
这就是序列化的实际工作方式,它不会编写可读的文本文件,而是编写对象字段的简短版本。
我想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 问题吗?
这就是序列化的实际工作方式,它不会编写可读的文本文件,而是编写对象字段的简短版本。