Java的序列化流程如下:
Java的反序列化流程如下:
注意:並不是所有類都需要進行序列化,主要原因有兩個
1)安全問題。Java中有的類屬於敏感類,此類的對象數據不便對外公開,而序列化的對象數據很容易進行破解,無法保證其數據的安全性,因此一般這種類型的對象不會進行序列化。
2)資源問題。可以使用序列化字節流創建對象,而且這種創建時不受限制的,有時過多地創建對象會造成很大的資源問題,因此此類對象也不適宜進行序列化。
Serializable
Serializable是Java提供的一個序列化接口,它是一個空接口,專門為對象提供標准的序列化跟反序列化操作。
序列化過程:
1 Person p = new Person("name","id"); 2 File file = new File("cache.txt"); 3 FileOutputStream output = new FileOutputStream(file); 4 ObjectOutputStream objectOutputStream = new ObjectOutputStream(output); 5 objectOutputStream.writeObject(p); 6 output.close(); 7 objectOutputStream.close();
反序列化過程:
1 File file = new File("cache.txt"); 2 FileInputStream input= new FileInputStream(file); 3 ObjectInputStream objectInputStream = new ObjectInputStream(input); 4 Person p = (Person)objectInputStream.readObject(); 5 System.out.println(p.getName()+"---"+p.getId()); 6 input.close(); 7 objectInputStream.close();