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(); // 目標(biāo)對象,需要序列化為 byte [] (錯誤方式)
第二步:
ByteArrayInputStream bais = new ByteArrayInputStream(strData);;
ObjectInputStream ois = = new ObjectInputStream(bais);
Object obj = ois.readObject(); ?反序列化喻粹。 報錯
正確代碼應(yīng)該是
第一步:對象序列化為 byte [] 數(shù)組 targetData
Object data = new Object(); // 目標(biāo)對象儡循,需要序列化為 byte []
ByteArrayOutputStream baos = ByteArrayOutputStream();
ObjectOutputStream oos = ObjectOutputStream(baos);
oos.writeObject();
byte [] strData = baos.toByteArray();
第二步:byte []數(shù)組 targetData 序列化為java對象
ByteArrayInputStream bais = new ByteArrayInputStream(strData);;
ObjectInputStream ois = = new ObjectInputStream(bais);
Object obj = ois.readObject(); ?反序列化樱蛤,正確