ObjectInputStream類實現(xiàn)對象的反序列,ObjectOutputStream類實現(xiàn)對...
點(diǎn)擊上方“Java進(jìn)階學(xué)習(xí)交流”,進(jìn)行關(guān)注
后臺回復(fù)“Java”即可獲贈Java學(xué)習(xí)資料
今
日
雞
湯
春草明年綠,王孫歸不歸?大家好,我是Java進(jìn)階者。
前言
本文主要學(xué)習(xí)ObjectInputStream類實現(xiàn)對象的反序列,ObjectOutputStream類實現(xiàn)對象的序列化流,接下來小編帶大家一起來學(xué)習(xí)!
一、 ObjectInputStream類
1.ObjectInputStream是對象的反序列化流,它是InputStream類的子類。
2.ObjectInputStream類的構(gòu)造方法
public ObjectInputStream(InputStream in):創(chuàng)建指定的輸入流對象讀取ObjectInputStream。參數(shù)in表示指定的輸入流對象。
例子:
FileInputStream fs=new FileInputStream("test.txt");ObjectInputStream os=new ObjectInputStream(fs);
3.使用ObjectInputStream類實現(xiàn)對象的反序列化例子
import java.io.*;class Person implements Serializable{// 實現(xiàn)序列化接口private String id,name;private int age;//構(gòu)造方法public Person(String id,String name, int age) {this.id = id;this.name = name;this.age = age;}public String getId() {return id;}public void setId(String id) {this.id = id;}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 class P18{public static void main(String[] args) throws Exception {//創(chuàng)建文件輸入流對象,讀取指定的文件FileInputStream fs=new FileInputStream("text/test");//創(chuàng)建對象輸入流ObjectInputStream os=new ObjectInputStream(fs);//讀取Person對象Person p=(Person)os.readObject();System.out.println("讀取文本的數(shù)據(jù)后顯示:");System.out.println("id="+p.getId()+"\tname="+p.getName()+"\tage="+p.getAge());}}
運(yùn)行的結(jié)果如下圖所示:

從上面的代碼中因為Person類中屬性的私有的,使用訪問器的方法set和get的方法,當(dāng)調(diào)用ObjectInputStream的readObject()方法把text目錄下的test的Person對象數(shù)據(jù)讀取出來,這個就是反序列化。
二、ObjectOutputStream類
1.ObjectOutputStream是對象的序列化流,它是OutputStream類的子類。
2.ObjectOutputStream類的構(gòu)造方法
public ObjectOutputStream(OutputStream out):創(chuàng)建指定的輸出流對象寫入ObjectOutputStream。參數(shù)out表示指定的輸出流對象。
例子:
FileOutputStream fs=new FileOutputStream("test.txt");ObjectOutputStream os=new ObjectOutputStream(fs);
對象輸出流使用writeObject(Object obj)方法將一個對象obj寫入到一個文件,對象輸入流使用readObject()方法從源中讀取一個對象到程序中。
3.使用ObjectOutputStream類實現(xiàn)對象的序列化例子
import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;import java.io.Serializable;public class Person implements Serializable{// 實現(xiàn)序列化接口private String id,name;private int age;//構(gòu)造方法public Person(String id,String name, int age) {this.id = id;this.name = name;this.age = age;}public String getId() {return id;}public void setId(String id) {this.id = id;}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 static void main(String[] args) throws IOException {//創(chuàng)建一個Person對象Person p=new Person("C01","進(jìn)階者",18);System.out.println("寫入文件前的數(shù)據(jù):");System.out.println("id="+p.getId()+"\tname="+p.getName()+"\tage="+p.getAge());//創(chuàng)建文件輸出流對象,把數(shù)據(jù)寫入text目錄下的test.txt文件中FileOutputStream fs=new FileOutputStream("text/test.txt");//創(chuàng)建對象輸出流ObjectOutputStream os=new ObjectOutputStream(fs);os.writeObject(p);}}
運(yùn)行的結(jié)果如下圖所示:

從上面的代碼中,首先是對Person對象進(jìn)行實例化,它的id為c01,name為進(jìn)階者,年齡為18。當(dāng)調(diào)用ObjectOutputStream的writeObject()方法將Person對象寫入text目錄下的test.txt。這就實現(xiàn)了序列化!
三、總結(jié)
????本文主要介紹了ObjectInputStream類、ObjectOutputStream類。ObjectInputStream類是對象的反序列化流,它是InputStream類的子類,介紹了它的構(gòu)造方法和方法,通過一個例子來學(xué)習(xí)使用ObjectInputStream類實現(xiàn)對象的反序列化。ObjectOutputStream類是是對象的序列化流,它是OutputStream類的子類,通過一個例子來學(xué)習(xí)使用ObjectOutputStream類實現(xiàn)對象的序列化。希望大家通過本文的學(xué)習(xí),對你有所幫助!
????我是Java進(jìn)階者,希望大家通過本文的學(xué)習(xí),對你有所幫助!歡迎大家加我微信,有問題可以隨時幫大家解決噢,交個朋友也好哇~
-------------------?End?-------------------
往期精彩文章推薦:
淺談Java字符串的截取和分割、比較字符串
一篇文章教會你使用Java內(nèi)部類、成員內(nèi)部類、靜態(tài)內(nèi)部類和方法內(nèi)部類
一篇文章帶你了解Java選擇排序和垃圾回收機(jī)制
從Java角度看冒泡排序和多維數(shù)組

歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Java學(xué)習(xí)群請在后臺回復(fù)【入群】
萬水千山總是情,點(diǎn)個【在看】行不行
