在序列化对象中,使用ObjectOutputStream,由于该stream每new 一个对象都会调用writestreamheader,这样的话多次追加对象就会多次将header加入到流文件中。而在使用ObjectInputStream进行反序列化时 ,只new了一个stream对象,对应的也只readstreamheader一次,导致剩下的对象无法从流文件中解析出来。进入java的source code 发现writestreamheader写入了两个short数值magic、version。而通过getchannel.position() 返回的信息也可以看到在 new objectoutputstream前后fileoutputstream的大小差异也是4个byte,即两个short的长度。因此直接利用这一特征对fileoutputstream 进行截断 去除重复写入的streamheader部分,解决了这个问题,代码如下:在序列化对象中,使用ObjectOutputStream,由于该stream每new 一个对象