社区
Java SE
帖子详情
自定义的序列化问题StreamCorruptedException
lifejoy
2003-09-10 04:52:16
在序列化写入的的时候没有任何的,问题!但是在读入的时候发生StreamCorruptedException,我是在一个文件中保存多个对象,为什么会发生这种错误呢?
...全文
144
15
打赏
收藏
自定义的序列化问题StreamCorruptedException
在序列化写入的的时候没有任何的,问题!但是在读入的时候发生StreamCorruptedException,我是在一个文件中保存多个对象,为什么会发生这种错误呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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()方法.
关于多次存储
序列化
对象,读取报错
问题
。(Exc
eption
in thread “main” java.io.
Stream
Corrupte
dEx
c
eption
: invalid
stream
hea)
探讨了在多次存储
序列化
对象时遇到的
Stream
Corrupte
dEx
c
eption
异常,详细解释了
问题
产生的原因,并提供了一种解决方案,即通过
自定义
MyObjectOutput
Stream
和MyObjectInput
Stream
类来避免错误。
java反
序列化
异常接不到_对象反
序列化
时,抛出java.io.
Stream
Corrupte
dEx
c
eption
: invalid type code: AC异常...
本文详细介绍了在使用Java
序列化
时遇到的
Stream
Corrupte
dEx
c
eption
异常的原因及其解决方法,并提供了一个
自定义
ObjectOutput
Stream
子类的示例来避免在追加
序列化
对象时产生的
问题
。
zkclient出现
Stream
Corrupte
dEx
c
eption
报错的解决方法
本文介绍如何解决使用org.I0Itec.zkclient创建ZkClient实例时出现的
Stream
Corrupte
dEx
c
eption
报错和乱码
问题
。通过
自定义
序列化
类MyZkSerializer并使用UTF-8编码,避免了默认
序列化
类带来的
问题
。
存储两次
序列化
对象,读取报错
问题
java.io.
Stream
Corrupte
dEx
c
eption
: invalid type code: A
针对Java中多次
序列化
对象导致的java.io.
Stream
Corrupte
dEx
c
eption
异常,通过
自定义
序列化
与反
序列化
类来避免head信息冲突的
问题
。
解决 java.io.
Stream
Corrupte
dEx
c
eption
: invalid type code: AC 异常
本文介绍了在Java中使用ObjectOutput
Stream
进行
序列化
时遇到的
Stream
Corrupte
dEx
c
eption
异常,该异常发生在尝试追加写入对象到文件并随后反
序列化
时。
问题
的根本原因是每次创建ObjectOutput
Stream
时都会写入流头信息,导致文件中有多个流头。为了解决这个
问题
,作者
自定义
了一个AppendObjectOutput
Stream
类,重写write
Stream
Header()方法,确保文件中只存在一个流头。通过这种方式,成功解决了异常,实现了追加写入对象并能正常反
序列化
的功能。
Java SE
62,621
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章