序列化,反序列化

问题引入:

序列化(ObjectOutputStream):

  当我们在存储一个对象的是时候,不要把对象的里面的每一个属性单独存储,也不要把所有的属性都串成一个字符串,这样在读的时候会有很大的难度。所以,在存储对象的时候就把对象看成是一个对象存储就好了。

  将程序[内存]中的对象以及对象的状态信息存储到文件中来;注意,此时存储的是对象;

应用场景:例如,我们将一个对象从程序的一个部分传递到另外一个部分,或者将一个对象从网络的一个节点传递到另外一个节点;

  下面是从JDK API 1.6.0中文版中截取的一些关于输出流ObjectOutputStream(序列化)的一些小知识:

  一.ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。通过在流中使用文件可以实现对象的持久存储。如果流是网络套接字流,则可以在另一台主机上或另一个进程中重构对象。

  二.只能将支持 java.io.Serializable 接口的对象写入流中。每个 serializable 对象的类都被编码,编码内容包括类名和类签名、对象的字段值和数组值,以及从初始对象中引用的其他所有对象的闭包。

  三.writeObject 方法用于将对象写入流中。所有对象(包括 String 和数组)都可以通过 writeObject 写入。可将多个对象或基元写入流中。必须使用与写入对象时相同的类型和顺序从相应 ObjectInputstream 中读回对象。

  四.还可以使用 DataOutput 中的适当方法将基本数据类型写入流中。还可以使用 writeUTF 方法写入字符串。

  五.对象的默认序列化机制写入的内容是:对象的类,类签名,以及非瞬态和非静态字段的值。其他对象的引用(瞬态和静态字段除外)也会导致写入那些对象。可使用引用共享机制对单个对象的多个引用进行编码,这样即可将对象的图形恢复为最初写入它们时的形状。

反序列化(ObjectInputStream):]

猜你喜欢

转载自www.cnblogs.com/wudidamowang666/p/11087547.html