1. 程式人生 > >什麼是java的序列化,怎麼實現序列化?

什麼是java的序列化,怎麼實現序列化?

一、什麼是序列化:

序列化就是一種用來處理物件流的機制,所謂物件流也就是將物件的內容進行流化(將物件轉換成二進位制)。可以對流化後的物件進行讀寫操作,也可將流化後的物件傳輸於網路之間。序列化是為了解決在對物件流進行讀寫操作時所引發的問題。

 

二、在Java中如何實現序列化:

將需要被序列化的類實現Serializable介面,該介面沒有需要實現的方法,implements Serializable只是為了標註該物件是可被序列化的,然後使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(物件流)物件,接著,使用ObjectOutputStream物件的writeObject(Object obj)方法就可以將引數為obj的物件寫出(即儲存其狀態),要恢復的話則用輸入流。

 

 

三、例項:

首先我們要把準備要序列化類,實現 Serializabel介面

例如:我們要Person類裡的name和age都序列化

import java.io.Serializable;

public class Person implements Serializable { 
//本類可以序列化
private String name ;
private int age ;

public Person(String name,int age){
this.name = name ;
this.age = age ;
}
public String toString(){
return "姓名:" + this.name + ",年齡" + this.age ;
}
}

 

 

然後:我們將name和age序列化(也就是把這2個物件轉為二進位制,統族理解為“打碎”)

package org.lxh.SerDemo;

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

public class ObjectOutputStreamDemo {
 //序列化
public static void main(String[] args) throws Exception {
//序列化後生成指定檔案路徑
File file = new File("D:" + File.separator + "person.ser") ; 
ObjectOutputStream oos = null ;
//裝飾流(流)
oos = new ObjectOutputStream(new FileOutputStream(file)) ; 
//例項化類
Person per = new Person("張三",30) ; 
oos.writeObject(per) ;
//把類物件序列化
oos.close() ;
}
}

 

四、相關概念:

 序列化:把Java物件轉換為位元組序列的過程。
 反序列化:把位元組序列恢復為Java物件的過程。

 

五、用途:

物件的序列化主要有兩種用途:
1.把物件的位元組序列永久地儲存到硬碟上,通常存放在一個檔案中;
2.在網路上傳送物件的位元組序列。

 

作者:Roger_CoderLife

連結:https:blog.csdn.net/Roger_CoderLife/article/details/84334896

本文為Roger_CoderLife的原創文章,著作權歸作者所有,轉載請註明原文出處,歡迎轉載!