首頁 > 其他

java中的序列化和反序列化

2019-12-11 01:53:50

  將資料結構轉換為位元組的過程我們稱之為序列化;反之將位元組轉換為資料結構的過程我們稱之為反序列化;

1

序列化和反序列化   什麼是序列化?    將資料結構轉換為位元組的過程   什麼是反序列化?     將位元組轉換為資料結構的過程      

 如果想使用序列化和反序列化就要通過   OOS  和   OIS   序列化和反序列化必須要使用一個介面    java.io.Serializable;   實現該介面之後,還需要給該需要序列化的類提供一個類的版本號,這個類的   版本號分廠重要,他影響著反序列化是否成功。


2

   反序列化的時候,他會先檢視版本號和序列化的時候是否一致,如果不一致   直接丟擲異常,如果一致那麼他會啟動相容模式,序列化的時候 沒有的屬性,   在反序列的時候會使用預設值來代替。


3

   流是不是輸出還是輸入,相對的參照物是記憶體    如果將一個文字檔案的內容輸入到控制台顯示,首先需要    將該檔案的內容讀取到內容,然後輸出到控制台 (輸入流)


4

public class Person implements Serializable{

 /**  * 序列化的版本號   * 該版本號很重要 他影響著反序列化是否能夠成功  */ private static final long serialVersionUID = 1L;  private String name; private Integer age; private Double salary; private String address; public String getName() {  return name; } public void setName(String name) {  this.name = name; } public Integer getAge() {  return age; } public void setAge(Integer age) {  this.age = age; } public Double getSalary() {  return salary; } public void setSalary(Double salary) {  this.salary = salary; } @Override public String toString() {  return "Person [name=" + name + ", age=" + age + ", salary=" + salary +",address="+address+"]"; }}


5

import java.io.FileOutputStream;import java.io.ObjectOutputStream;

/** * 序列化 *  將資料結構---->位元組 *  * ObjectOutputStream 高階流 *  */public class OOSDemo { public static void main(String[] args) throws Exception{  Person p=new Person();  p.setName("張三豐");  p.setAge(22);  /**   *  Double  Integer 是兄弟關係   *  他們只能和自己相對應的基本型別做自動拆箱操作   *  2個包裝型別和基本型別不一樣,不能夠自動轉換。   */  p.setSalary(6000.0);  FileOutputStream fos=new FileOutputStream("Person.obj");  ObjectOutputStream oos=new ObjectOutputStream(fos);  oos.writeObject(p);  oos.close(); }}


6

import java.io.FileInputStream;import java.io.ObjectInputStream;/** * 反序列化 * 將位元組--->資料結構 */public class OISDemo { public static void main(String[] args) throws Exception{  FileInputStream fis=new FileInputStream("Person.obj");  ObjectInputStream ois=new ObjectInputStream(fis);  Person p=(Person)ois.readObject();  System.out.println(p);  ois.close(); }}



IT145.com E-mail:sddin#qq.com