java 对象转换成字节数组, 字节数据转成对象,出现错误请高手指教
一下为实现方法对象转换成字节数组用的是newObjectOutputStream(newBufferedOutputStream(byteStream));publics...
一下为实现方法
对象转换成字节数组用的是new ObjectOutputStream(new BufferedOutputStream(byteStream));
public static Object byteArrayToObject(byte[] buffer) {
Object ob = null;
ObjectInputStream ois = null;
ByteArrayInputStream bais = null;
try {
bais = new ByteArrayInputStream(buffer);
ois = new ObjectInputStream(bais);
ob = ois.readObject();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(null!=ois) {
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(null!=bais) {
try {
bais.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return ob;
}
运行包如下错误:
java.io.StreamCorruptedException: invalid stream header 展开
对象转换成字节数组用的是new ObjectOutputStream(new BufferedOutputStream(byteStream));
public static Object byteArrayToObject(byte[] buffer) {
Object ob = null;
ObjectInputStream ois = null;
ByteArrayInputStream bais = null;
try {
bais = new ByteArrayInputStream(buffer);
ois = new ObjectInputStream(bais);
ob = ois.readObject();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(null!=ois) {
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(null!=bais) {
try {
bais.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return ob;
}
运行包如下错误:
java.io.StreamCorruptedException: invalid stream header 展开
展开全部
对象序列化好了。
不要是内部类。
正常的
public Object byteArrayToObject(byte[] buffer)throws Exception{
Object ob = null;
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(buffer));
ob = ois.readObject();
ois.close();
return ob;
}
public byte[] ObjectToByteArray(DemoObject obj)throws Exception{
byte [] bytes=null;
ByteArrayOutputStream baos= new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
oos.close();
bytes=baos.toByteArray();
baos.close();
return bytes;
}
调用示范
test.byteArrayToObject( test.ObjectToByteArray(demo) );
得到结果,正常的。
不要是内部类。
正常的
public Object byteArrayToObject(byte[] buffer)throws Exception{
Object ob = null;
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(buffer));
ob = ois.readObject();
ois.close();
return ob;
}
public byte[] ObjectToByteArray(DemoObject obj)throws Exception{
byte [] bytes=null;
ByteArrayOutputStream baos= new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
oos.close();
bytes=baos.toByteArray();
baos.close();
return bytes;
}
调用示范
test.byteArrayToObject( test.ObjectToByteArray(demo) );
得到结果,正常的。
展开全部
这个具体是因为什么,没有全部源码我也搞不清楚。给你个解决的思路你试试吧,
看一下你在调用的时候参数byte[] buffer是怎么获得的,是否是通过ObjectOutputStream写入的 如果不是的话,
public byte[] getByte(ArrayList<String> list) {
byte[] bt=null;
ByteArrayOutputStream baos=new ByteArrayOutputStream();
try{
if(list!=null)
{
ObjectOutputStream objos=new ObjectOutputStream(baos);
objos.writeObject(list);
bt=baos.toByteArray();
}
}catch(Exception e)
{
bt=(byte[])null;
e.printStackTrace();
}
return bt;
}
用这么个方法把参数转一下,希望可以帮助到你。
看一下你在调用的时候参数byte[] buffer是怎么获得的,是否是通过ObjectOutputStream写入的 如果不是的话,
public byte[] getByte(ArrayList<String> list) {
byte[] bt=null;
ByteArrayOutputStream baos=new ByteArrayOutputStream();
try{
if(list!=null)
{
ObjectOutputStream objos=new ObjectOutputStream(baos);
objos.writeObject(list);
bt=baos.toByteArray();
}
}catch(Exception e)
{
bt=(byte[])null;
e.printStackTrace();
}
return bt;
}
用这么个方法把参数转一下,希望可以帮助到你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
传入的文件流有问题吧...
追问
是在客户端 将对象转成byte[] 传到服务器, 再从服务器,服务器再次转发到客户端将得到byte[] 转成对象, 本机测试 互转没有问题,经过转发后报:java.io.StreamCorruptedException: invalid stream header错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询