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(); 反序列化,正确
网友评论