????????java 提供了一種對象序列化的機制,該機制中,一個對象可以被表示為一個字節序列,該字節序列包括該對象的數據、有關對象的類型的信息和存儲在對象中數據的類型。
? ? ? ? 將序列化對象寫入文件之后,可以從文件中讀取出來,并且對它進行反序列化,也就是說,對象的類型信息、對象的數據,還有對象中的數據類型可以用來在內存中新建對象。
整個過程都是Java虛擬機(JVM)獨立的,也就是說,在一個平臺上序列化的對象可以在另一個完全不同的平臺上反序列化該對象。
????????類ObjectInputStream
writeObject(Object x)
? ? ? ? ?類ObjectOutputStream
readObject()
是高層次的數據流,它們包含序列化和反序列化對象的方法。
一、序列化對象?
1.1創建實體類
????????序列化要實體類去實現 implements?Serializable,否則會報java.io.NotSerializableException異常
????????出現這個問題的時候應該是想要將 該實體類對象保存到某個地方,那么此時必須需要序列化;一個類只有實現了Serializable接口,它的對象才是可序列化的;
????????而訪問這個類的源代碼你會發現他什么也沒有實現,其實就相當于一個標志位,它的作用只是能指明哪個類可以被實例化
package com.amarsoft.lease;import java.io.Serializable;public class Student implements Serializable {private String name ;private int age ;private String sex;Student(String name,int age,String sex){this.name = name;this.age = age;this.sex = sex;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}
}
//序列化String path = "D:\\workspace\\HtProject\\ea\\casic-mis-ea\\amix-lease\\src\\test\\java\\com\\amarsoft\\lease\\Student1.ser";Student student = new Student("會飛的蝸牛", 300, "雄性");try{FileOutputStream fileOutputStream = new FileOutputStream(path);ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);objectOutputStream.writeObject(student);objectOutputStream.close();fileOutputStream.close();}catch (Exception e){System.out.println(e.getMessage());}
二、反序列化對象
package com.amarsoft.lease;import java.io.FileInputStream;
import java.io.ObjectInputStream;public class Cainfyly {public static void main(String[] args) {//反序列化String path = "D:\\workspace\\HtProject\\ea\\casic-mis-ea\\amix-lease\\src\\test\\java\\com\\amarsoft\\lease\\Student1.ser";try{FileInputStream fileInputStream = new FileInputStream(path);ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);Student stu = (Student)objectInputStream.readObject();stu.setAge(200);System.out.println(stu.getAge());//200objectInputStream.close();fileInputStream.close();}catch (Exception e){System.out.println(e.getMessage());}}
}