AndroidJava学习笔记

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();
  }         
上一篇 下一篇

猜你喜欢

热点阅读