对象序列化
對象序列化就是把一個對象變為二進制的數據流的一種方法。
通過對象序列化可以方便地實現對象的傳輸或存儲。
?
如果一個類的對象想被序列化,則對象所在的類必須實現java.io.Serializable接口
//類名:Person_3 //屬性: //方法: class Person_3 implements Serializable{ //此類的對象可以被序列化private String name;private int age;public Person_3(String name, int age) {super();this.name = name;this.age = age;}@Overridepublic String toString() {return "姓名:" + name + ", 年齡:" + age;}}?此類的對象是可以經過二進制數據流進行傳輸的
如果要完成對象的輸入或者輸出,還必須依靠對象輸出流(ObjectOutputStream)和對象輸入流(ObjectInputStream).
使用對象輸出流輸出序列化對象的步驟有時也稱為序列化
而使用對象輸入流讀入對象的過程有時也稱為反序列化
?
<1>對象輸出流ObjectOutputStream
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.Serializable;//================================================= // File Name : Serializable_demo //------------------------------------------------------------------------------ // Author : Common//類名:Person_3 //屬性: //方法: class Person_3 implements Serializable{ //此類的對象可以被序列化private String name;private int age;public Person_3(String name, int age) {super();this.name = name;this.age = age;}@Overridepublic String toString() {return "姓名:" + name + ", 年齡:" + age;}}//主類 //Function : Serializable_demo; public class Serializable_demo {public static void main(String[] args) throws Exception {// TODO 自動生成的方法存根File f = new File("/home/common/software/coding/HelloWord/HelloWord/test.txt");//路徑ObjectOutputStream oos = null;OutputStream out = new FileOutputStream(f); //文件輸出流oos = new ObjectOutputStream(out); //為對象輸出流實例化oos.writeObject(new Person_3("張三", 30));oos.close();}}?
<2>對象輸出流ObjectInputStream
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.Serializable;//================================================= // File Name : Serializable_demo //------------------------------------------------------------------------------ // Author : Common//類名:Person_3 //屬性: //方法: class Person_3 implements Serializable{ //此類的對象可以被序列化private String name;private int age;public Person_3(String name, int age) {super();this.name = name;this.age = age;}@Overridepublic String toString() {return "姓名:" + name + ", 年齡:" + age;}}//主類 //Function : Serializable_demo; public class Serializable_demo {public static void main(String[] args) throws Exception {// TODO 自動生成的方法存根File f = new File("/home/common/software/coding/HelloWord/HelloWord/test.txt");//路徑ObjectInputStream ois = null;InputStream input = new FileInputStream(f); //文件輸入流ois = new ObjectInputStream(input); //為對象輸入流實例化Object obj = ois.readObject(); //讀取對象ois.close();System.out.println(obj);}}?
總結
- 上一篇: ViewPager详解(一)——View
- 下一篇: ElasticSearch 2 (21)