将对象序列化保存到Blob中,急急急急急急急急急急急急急急急急

wcl_friend 2011-03-02 05:20:44
我将一个数组对象序列化保存在数据库一个Blob类型的字段上,当我用这个值的时候,再反序列化出来,现在反序列化出错。
java.io.StreamCorruptedException: invalid stream header
哪个大侠给指点下啊,非常感谢。。。。
数组里面存放的都是对象,而且每个对象都实现了 java.io.Serializable。
转换Blob的代码:

private void saveRequestObject(Object obj,
BlobBean blobBean) {
try {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream outObj = new ObjectOutputStream(byteOut);
outObj.writeObject(obj);
byte[] objbytes = byteOut.toByteArray();
blobBean.setRequestObject(Hibernate.createBlob(objbytes));
} catch (Exception e) {
e.printStackTrace();
}
}


将Blob字段取出来,转换成对象代码:

InputStream is = blobBean.getRequestObject().getBinaryStream();
BufferedInputStream input = new BufferedInputStream(is);

byte[] buff = new byte[32768];
while (-1 != (input.read(buff, 0, buff.length)));
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(buff));

ClaimInfoDTO claimInfoDTO [] = (ClaimInfoDTO []) ois.readObject();

每次执行到这一行的时候都报错,ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(buff));



...全文
295 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcl_friend 2011-03-30
  • 打赏
  • 举报
回复
具体原因是什么我没搞清楚,我换了一种方法。
不存到数据库里面了,在本地保存了一个二进制文件,在需要的时候,再已二进制流的形式,读取出来。
  • 打赏
  • 举报
回复
原因是什么呢?
wcl_friend 2011-03-09
  • 打赏
  • 举报
回复
谢谢两位了,我的问题解决了。
yukiMark 2011-03-02
  • 打赏
  • 举报
回复
try {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream outObj = new ObjectOutputStream(byteOut);
outObj.writeObject(obj);
byte[] objbytes = byteOut.toByteArray();
blobBean.setRequestObject(Hibernate.createBlob(objbytes));
} catch (Exception e) {
e.printStackTrace();
}finally{
byteOut.flush();
byteOut.close();
outbObj.flush();
outObj.close();
}
试试

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧