社区
Java SE
帖子详情
自定义的序列化问题StreamCorruptedException
lifejoy
2003-09-10 04:52:16
在序列化写入的的时候没有任何的,问题!但是在读入的时候发生StreamCorruptedException,我是在一个文件中保存多个对象,为什么会发生这种错误呢?
...全文
115
15
打赏
收藏
自定义的序列化问题StreamCorruptedException
在序列化写入的的时候没有任何的,问题!但是在读入的时候发生StreamCorruptedException,我是在一个文件中保存多个对象,为什么会发生这种错误呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lifejoy
2003-09-13
打赏
举报
回复
米!如果是序列化一个数组,那么是作为一个对象来进行序列化,那么如果是在一个流上序列化多个对象,因为每次都写序列化头造成的问题.我也不知道怎么解决.manboo给的是SUN的答案,但是我怎么都看不懂
ChDw
2003-09-12
打赏
举报
回复
我试过连续压100~200个数组中的对象到流中都不会出现任何问题,我觉得还是你的代码写的有问题
lifejoy
2003-09-12
打赏
举报
回复
ChDw(米) 如果只是传递一个对象是没有问题的,但是我是要连续传递一系列的对象,这样是会造成一些问题的,但是SUN的文档和一些说法太模糊了!
ChDw
2003-09-12
打赏
举报
回复
应该是不需要重载父类方法的
出现StreamCorruptedException我想有可能是你在关闭ObjectOutputStream之前没有先调用flush方法,致使最后面一段丢失了。你需要调用oos.flush();oos.close()之后才好用那个
真正的OutputStream
lifejoy
2003-09-12
打赏
举报
回复
好像不行啊!还是会出现错误!我在序列的的writeObject方法中是这样处理的是哪儿错了呢?
M_ObjectOutputStream moos=new M_ObjectOutputStream(oos);
moos.defaultWriteObject();
我在读的时候还是使用ObjectInputStream来读的还是会出现问题!我是在Socket上传递对象的,我很是不明白为什么RMI可以传递我传递的就会出错呢?
lifejoy
2003-09-12
打赏
举报
回复
public class M_ObjectOutputStream extends ObjectOutputStream {
public M_ObjectOutputStream() throws IOException, SecurityException {
}
public M_ObjectOutputStream(OutputStream out) throws IOException {
super(out);
}
protected void writeStreamHeader() throws IOException
{
super.writeStreamHeader();
}
}
是这样进行重载吗?
lifejoy
2003-09-11
打赏
举报
回复
UP
lifejoy
2003-09-11
打赏
举报
回复
UP
lifejoy
2003-09-11
打赏
举报
回复
我该怎么做呢?如何进行写呢?
UP
UP
jokerjava
2003-09-11
打赏
举报
回复
做一个类 里面是要保存的对象不就行了
像一个箱子 里面都是object
三合一
2003-09-11
打赏
举报
回复
manboo(非典型天使) 已经说到啦,就是构造一个自己的ObjectOutputStream和ObjectInputStream,简单的就覆盖writeStreamHeader()方法就行了,其他什么都不用做
manboo
2003-09-10
打赏
举报
回复
这是我在sun中国论坛上看到的!唉具体怎么做我就不知道了!
manboo
2003-09-10
打赏
举报
回复
天使!如何判断是第一次写入呢>?
pqds
2003-09-10
打赏
举报
回复
上面说得没错!◎
序列的写入和读取是一一对应的!
应该完全按照你写入的顺序来读取!
manboo
2003-09-10
打赏
举报
回复
使用缺省的serializetion的实现时,一个ObjectOutputStream的构造和一个ObjectInputStream的构造必须一一对应.ObjectOutputStream的构造函数会向输出流中写入一个标识头,而ObjectInputStream会首先读入这个标识头.因此,多次以追加方式向一个文件中写入object时,该文件将会包含多个标识头.所以用ObjectInputStream来deserialize这个ObjectOutputStream时,将产生StreamCorruptedException.一种解决方法是可以构造一个ObjectOutputStream的子类,并覆盖writeStreamHeader()方法.被覆盖后的writeStreamHeader()方法应判断是否为首次向文件中写入object,羰?则调用super.writeStreamHeader();若否,即以追加方式写入object时,则应调用ObjectOutputStream.reset()方法.
java.io.
Stream
Corrupte
dEx
c
eption
(解决方案).md
项目中碰到的,记录一下解决方案
中科软,文思 面试题
中科软 文思 面试题集是历届这些公司的经典的面试题,祝君面试成功!!
Flink中kafkaconnector任意对象
自定义
序列化
与反
序列化
(KafkaSerializationSchema)
Flink中kafkaconnector
自定义
序列化
与反
序列化
对象与String自行互转进行生产与消费 当我们对Flink的kafka-connector有了一个大概的认识,并且能够对String,Json等类型的数据进行一个生产和消费操作后,能够想到的是那么对于更复杂的对象的生产与消费呢,比如某一个
自定义
的对象(POJO类),乃至任意的一个Object。 首先,我们发现可以很简单地发送String到kafka中,从其中去进行一个String类型地消费也很简单。那么首先可以想到的是,可以将对象信息
Java多种方式
自定义
序列化
我们知道,通过实现java.io.Serializable接口可以使得该类的实例能够被
序列化
。例如如下的Person类, import java.io.Serializable; public class Person implements Serializable { private String name; private int age; public P
IO流反
序列化
(objectInput
Stream
)和
序列化
(ObjectOutput
Stream
)连续存储对象
Stream
Corrupte
dEx
c
eption
在做对象
序列化
和反
序列化
的时候最好可以做到整存整取,即不要追加。 如果追加会写入头部信息(比如每次写入都会加AC ED 00 05这样的信息),存进去时会变成:AC ED 00 05+存的信息+AC ED 00 05+存的信息..........而程序在反
序列化
读取时只读一次头部信息,即第一次的,后面的头部信息会被认为是内容,因此会报Sream
Corrupte
dEx
c
eption
错误。 第
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章