最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)序列化與反序列化的簡(jiǎn)單示例

 更新時(shí)間:2016年05月12日 08:57:46   作者:王路情  
序列化與反序列化是指Java對(duì)象與字節(jié)序列的相互轉(zhuǎn)換,一般在保存或傳輸字節(jié)序列的時(shí)候會(huì)用到,下面有兩個(gè)Java實(shí)現(xiàn)序列化與反序列化的簡(jiǎn)單示例,不過(guò)還是先來(lái)看看序列和反序列化的具體概念:

1.Java序列化與反序列化

Java序列化是指把Java對(duì)象轉(zhuǎn)換為字節(jié)序列的過(guò)程;而Java反序列化是指把字節(jié)序列恢復(fù)為Java對(duì)象的過(guò)程。

2.為什么需要序列化與反序列化

我們知道,當(dāng)兩個(gè)進(jìn)程進(jìn)行遠(yuǎn)程通信時(shí),可以相互發(fā)送各種類(lèi)型的數(shù)據(jù),包括文本、圖片、音頻、視頻等, 而這些數(shù)據(jù)都會(huì)以二進(jìn)制序列的形式在網(wǎng)絡(luò)上傳送。那么當(dāng)兩個(gè)Java進(jìn)程進(jìn)行通信時(shí),能否實(shí)現(xiàn)進(jìn)程間的對(duì)象傳送呢?答案是可以的。如何做到呢?這就需要Java序列化與反序列化了。換句話說(shuō),一方面,發(fā)送方需要把這個(gè)Java對(duì)象轉(zhuǎn)換為字節(jié)序列,然后在網(wǎng)絡(luò)
傳送;另一方面,接收方需要從字節(jié)序列中恢復(fù)出Java對(duì)象。

當(dāng)我們明晰了為什么需要Java序列化和反序列化后,我們很自然地會(huì)想Java序列化的好處。其好處一是實(shí)現(xiàn)了數(shù)據(jù)的持久化,通過(guò)序列化可以把數(shù)據(jù)永久地保存到硬盤(pán)上(通常存放在文件里),二是,利用序列化實(shí)現(xiàn)遠(yuǎn)程通信,即在網(wǎng)絡(luò)上傳送對(duì)象的字節(jié)序列。

3.示例:
(1)序列化反序列化文件:

import java.io.*; 
 
@SuppressWarnings("serial") 
class Person implements Serializable { 
 
  public Person(String name, String sex, int age, int height) { 
    this.name = name; 
    this.sex = sex; 
    this.age = age; 
    this.height = height; 
  } 
 
  public String toString() { 
    return "|" + this.name + "|" + this.sex + "|" + this.age + "|" 
        + this.height + "|"; 
  } 
 
  public String name; 
  public String sex; 
  public int age; 
  public int height; 
} 
 
public class SerialTest { 
  public static void main(String[] args) throws FileNotFoundException, 
      IOException, ClassNotFoundException { 
 
    Person p = new Person("Jim", "male", 28, 194); 
 
    // 開(kāi)始序列化 
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream( 
        new File("myTest.txt"))); 
    oos.writeObject(p); 
 
    // 反序列化 
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream( 
        new File("myTest.txt"))); 
    Person p1 = (Person) ois.readObject(); 
 
    System.out.println(p1.toString()); 
  } 
} 


(2)XML反序列化成class:

import java.io.*; 
import com.thoughtworks.xstream.XStream; 
import com.thoughtworks.xstream.io.xml.DomDriver; 
 
 
@SuppressWarnings("serial") 
class RoadInfo implements Serializable { 
 
  public int id; 
  public long MDN; 
  public String NAME; 
  public double LNG; 
  public double LAT; 
  public String ICON; 
 
} 
 
@SuppressWarnings("serial") 
class table_list implements Serializable { 
 
  public String toString() { 
    StringBuffer sb = new StringBuffer(); 
    for (RoadInfo r : sequence) { 
      sb.append("|"); 
      sb.append(r.id); 
      sb.append("|"); 
      sb.append(r.MDN); 
      sb.append("|"); 
      sb.append(r.NAME); 
      sb.append("|"); 
      sb.append(r.LNG); 
      sb.append("|"); 
      sb.append(r.LAT); 
      sb.append("|"); 
      sb.append(r.ICON); 
      sb.append("|\n"); 
    } 
    return sb.toString(); 
  } 
 
  public table_list(int count) { 
    sequence = new RoadInfo[count]; 
    for (int i = 0; i < count; i++) { 
      sequence[i] = new RoadInfo(); 
    } 
  } 
 
  public RoadInfo[] sequence; 
} 
 
public class XMLTest { 
 
  /** 
   * @param args 
   */ 
  public static void main(String[] args) throws Exception { 
    // TODO Auto-generated method stub 
    StringBuffer sb = new StringBuffer(); 
    BufferedReader reader = new BufferedReader(new FileReader(new File( 
        "friend_msg.xml"))); 
    while (true) { 
      String s = reader.readLine();// 讀一行 
      if (s == null) { 
        break; 
      } 
      sb.append(s); 
    } 
 
    XStream xs = new XStream(new DomDriver()); 
    table_list db = (table_list) xs.fromXML(sb.toString()); 
    System.out.println(db.toString()); 
 
  } 
} 

相關(guān)文章

  • springboot啟動(dòng)后和停止前執(zhí)行方法示例詳解

    springboot啟動(dòng)后和停止前執(zhí)行方法示例詳解

    這篇文章主要介紹了springboot啟動(dòng)后和停止前執(zhí)行方法,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • 簡(jiǎn)單的用java實(shí)現(xiàn)讀/寫(xiě)文本文件的示例

    簡(jiǎn)單的用java實(shí)現(xiàn)讀/寫(xiě)文本文件的示例

    同時(shí)也展示了如果從輸入流中讀出來(lái)內(nèi)容寫(xiě)入輸出流中(僅限文本流) 三個(gè)例子可以獨(dú)立存在,所以根據(jù)需要只看其中一個(gè)就行了。
    2008-07-07
  • 詳解Spring Boot自動(dòng)裝配的方法步驟

    詳解Spring Boot自動(dòng)裝配的方法步驟

    這篇文章主要介紹了詳解Spring Boot自動(dòng)裝配的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 使用Java實(shí)現(xiàn)獲取excel附件并解析

    使用Java實(shí)現(xiàn)獲取excel附件并解析

    在Java中,我們經(jīng)常需要讀取Excel文件中的數(shù)據(jù),進(jìn)行處理和分析,本文將介紹如何使用Java代碼來(lái)獲取與解析Excel文件中的附件,希望對(duì)大家有所幫助
    2025-04-04
  • SpringCloud集成Nacos的使用小結(jié)

    SpringCloud集成Nacos的使用小結(jié)

    這篇文章主要介紹了SpringCloud集成Nacos的使用小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • SpringCloud_Sleuth分布式鏈路請(qǐng)求跟蹤的示例代碼

    SpringCloud_Sleuth分布式鏈路請(qǐng)求跟蹤的示例代碼

    Spring Cloud Sleuth是一款針對(duì)Spring Cloud的分布式跟蹤工具,本文通過(guò)實(shí)例代碼介紹了SpringCloud_Sleuth分布式鏈路請(qǐng)求跟蹤,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • Java如何向主函數(shù)main中傳入?yún)?shù)

    Java如何向主函數(shù)main中傳入?yún)?shù)

    這篇文章主要介紹了Java如何向主函數(shù)main中傳入?yún)?shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • spring源碼閱讀--aop實(shí)現(xiàn)原理講解

    spring源碼閱讀--aop實(shí)現(xiàn)原理講解

    這篇文章主要介紹了spring源碼閱讀--aop實(shí)現(xiàn)原理講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 解析java中的condition

    解析java中的condition

    Condition 將 Object 監(jiān)視器方法(wait()、notify()和notifyAll())分解成截然不同的對(duì)象,以便通過(guò)將這些對(duì)象與任意Lock實(shí)現(xiàn)組合使用,為每個(gè)對(duì)象提供多個(gè)等待 set(wait-set)
    2021-06-06
  • JAVA中的字符串常量池使用操作代碼

    JAVA中的字符串常量池使用操作代碼

    Java中的字符串常量池是Java堆中的一塊特殊存儲(chǔ)區(qū)域,用于存儲(chǔ)字符串。它的實(shí)現(xiàn)是為了提高字符串操作的性能并節(jié)省內(nèi)存,這篇文章主要介紹了JAVA中的字符串常量池,需要的朋友可以參考下
    2022-12-12

最新評(píng)論

班玛县| 亚东县| 响水县| 绥化市| 兖州市| 山阳县| 抚顺市| 福建省| 和平县| 普宁市| 辉县市| 九龙县| 定结县| 尼勒克县| 汶上县| 寻乌县| 烟台市| 云霄县| 兖州市| 民勤县| 西乡县| 洛隆县| 申扎县| 玉龙| 汝州市| 嫩江县| 福鼎市| 鄄城县| 霸州市| 灵武市| 合川市| 高州市| 偏关县| 南安市| 图木舒克市| 横山县| 翼城县| 安塞县| 鹤岗市| 高雄县| 和龙市|