Android:序列化对象
2017-08-02 本文已影响9人
AnakinSky
Java的对象序列化是指将那些实现了Serializable接口的对象转换成一个字符序列,并能够在以后将这个字节序列完全恢复为原来的对象。这一过程甚至可通过网络进行,这意味着序列化机制能自动弥补不同操作系统之间的差异。
如果想要序列化一个对象,首先要创建某些OutputStream(如FileOutputStream、ByteArrayOutputStream等),然后将这些OutputStream封装在一个ObjectOutputStream中。这时候,只需要调用writeObject()方法就可以将对象序列化,并将其发送给OutputStream。而反序列的过程(即将一个序列还原成为一个对象),需要将一个InputStream(如FileInputstream、ByteArrayInputStream等)封装在ObjectInputStream内,然后调用readObject()。
public class TempData{
private int id;
private String data;
@Override
public String toString() {
return"TempData [id=" + id + ", data=" + data + "]";
}
}
//序列化操作
private byte[] getStreamData(TempData data){
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
try {
ObjectOutputStream objectOutputStream = new ObjectOutputStream(arrayOutputStream);
objectOutputStream.writeObject(data);
objectOutputStream.flush();
byte buf[] = arrayOutputStream.toByteArray();
objectOutputStream.close();
arrayOutputStream.close();
return buf;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
//反序列化操作
ByteArrayInputStream arrayInputStream = new ByteArrayInputStream(data);
try
{
ObjectInputStream inputStream = new ObjectInputStream(arrayInputStream);
TempData data= (TempData) inputStream.readObject();
inputStream.close();
arrayInputStream.close();
} catch (Exception e)
{
e.printStackTrace();
}