繁体   English   中英

ObjectOutputStream状态机?

[英]ObjectOutputStream state machine?

有没有办法强制ObjectOutputStream不依赖于以前的写入,应该每次写入对象属性和完整信息?

我可以从二进制文件中看到只写入以前版本的某种增量,如果你尝试加载随机项,它会失败吗?

是的,你想要ObjectOutputStream.reset()

public void reset() throws IOException

重置将忽略已写入流的任何对象的状态。 状态重置为与新的ObjectOutputStream相同。 流中的当前点标记为重置,因此相应的ObjectInputStream将在同一点重置。 先前写入流的对象将不会被称为流中的对象。 它们将再次写入流中。

早些时候,Javadoc讨论了对已见过的对象的引用:

对象的默认序列化机制会写入对象的类,类签名以及所有非瞬态和非静态字段的值。 对其他对象的引用(瞬态或静态字段除外)也会导致写入这些对象。 使用引用共享机制对对单个对象的多个引用进行编码,以便可以将对象图形恢复为与写入原始图像时相同的形状。

正如reset Javadoc所解释的那样,调用reset会导致reset流状态。 您应该知道此重置操作本身会将字节写入流(以便解码端也知道何时重置流)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM