美文网首页java
java 对象反序列化报错:invalid stream hea

java 对象反序列化报错:invalid stream hea

作者: 坚强一点 | 来源:发表于2017-04-06 19:04 被阅读2851次

    java 对象反序列化报错:invalid stream header: 32303137

    原因是 我使用  String 对象的 getBytes() 获取的 byte

    然后用该 byte  使用 

    ByteArrayInputStream bais = new ByteArrayInputStream(data);;

    ObjectInputStream ois = = new ObjectInputStream(bais);

    Object obj = ois.readObject();  反序列化。

    这是不对的

    完整的错误代码

    第一步:

    byte [] strData = "abc".getBytes(); // 目标对象,需要序列化为 byte [] (错误方式)

    第二步:

    ByteArrayInputStream bais = new ByteArrayInputStream(strData);;

    ObjectInputStream ois = = new ObjectInputStream(bais);

    Object obj = ois.readObject();  反序列化。 报错

    正确代码应该是

    第一步:对象序列化为 byte [] 数组 targetData

    Object data = new Object(); // 目标对象,需要序列化为 byte []

    ByteArrayOutputStream baos = ByteArrayOutputStream();

    ObjectOutputStream oos = ObjectOutputStream(baos);

    oos.writeObject();

    byte [] strData = baos.toByteArray();

    第二步:byte []数组 targetData 序列化为java对象

    ByteArrayInputStream bais = new ByteArrayInputStream(strData);;

    ObjectInputStream ois = = new ObjectInputStream(bais);

    Object obj = ois.readObject();  反序列化,正确

    相关文章

      网友评论

        本文标题:java 对象反序列化报错:invalid stream hea

        本文链接:https://www.haomeiwen.com/subject/jbwqattx.html