Java Object 和byte数组的转换问题,求指导
根据网上代码,编写了一个简单的程序,总是出现下面的问题:
java.io.StreamCorruptedException: invalid stream header: 68656C6C
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at TestObj.toObject(TestObj.java:28)
at TestObj.main(TestObj.java:14)
[B@6d311334
开发环境使用的是Eclipse for Java:
Version: 2018-12 (4.10.0)
Build id: 20181214-0600
安装了Java SE-1.8
程序代码为:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
//import org.apache.commons.lang.SerializationUtils;
public class TestObj
{
public static void main(String[] args) throws ClassNotFoundException, IOException
{
String str="hello world";
byte[] bytestmp=str.getBytes("iso-8859-1");
Object sObj=toObject(bytestmp);
// Object sObj=SerializationUtils.deserialize(bytestmp);
byte[] tmparr=toByteArray(sObj);
String tmpOut=tmparr.toString();
System.out.println(tmpOut);
}
public static Object toObject (byte[] bytes)
{
Object obj = null;
try {
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bis);
obj = ois.readObject();
ois.close();
bis.close();
} catch (IOException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
//obj=SerializationUtils.deserialize(bytes);
return obj;
}
public static byte[] toByteArray (Object obj)
{
byte[] bytes = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(obj);
oos.flush();
bytes = bos.toByteArray ();
oos.close();
bos.close();
} catch (IOException ex) {
ex.printStackTrace();
}
return bytes;
}
}