黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 IO流之序列化流與反序列化流

IO流之序列化流與反序列化流

更新時間:2020-11-18 17:14:44 來源:動力節(jié)點 瀏覽1157次

在正式介紹 IO流中的序列化流與反序列化流之前,我們先來看看何謂序列化和反序列化:

序列化:用一個字節(jié)序列可以表示一個對象,該字節(jié)序列包含該對象的數(shù)據(jù)、對象的類型和對象中存儲的屬性等信息。字節(jié)序列寫出到文件之后,相當(dāng)于文件中持久保存了一個對象的信息。


反序列化:該字節(jié)序列還可以從文件中讀取回來,重構(gòu)對象,對它進行反序列化。對象的數(shù)據(jù)、對象的類型和對象中存儲的數(shù)據(jù)信息,都可以用來在內(nèi)存中創(chuàng)建對象。

用于從流中讀取對象的操作流 ObjectInputStream 稱為 反序列化流

用于向流中寫入對象的操作流 ObjectOutputStream 稱為 序列化流

用于操作對象。可以將對象寫入到文件中,也可以從文件中讀取對象。


一、在序列化概念的基礎(chǔ)之上我們再來看對象序列化流ObjectOutputStream:

ObjectOutputStream將Java 對象的基本數(shù)據(jù)類型和圖形寫入 OutputStream。可以使用 ObjectInputStream 讀取(重構(gòu))對象。通過在流中使用文件可以實現(xiàn)對象的持久存儲。

需要注意的是對象序列化流只能將支持 java.io.Serializable 接口的對象寫入流中。

java.io.ObjectOutputStream extends OutputStream

ObjectOutputStream:對象的序列化流

作用:

把對象以流的方式寫入到文件中保存


構(gòu)造方法:

ObjectOutputStream(OutputStream out) 創(chuàng)建寫入指定 OutputStream 的 ObjectOutputStream。


參數(shù):

OutputStream out:字節(jié)輸出流

特有的成員方法:

void writeObject(Object obj) 將指定的對象寫入 ObjectOutputStream。


使用步驟:

1.創(chuàng)建ObjectOutputStream對象,構(gòu)造方法中傳遞字節(jié)輸出流

2.使用ObjectOutputStream對象中的方法writeObject,把對象寫入到文件中

3.釋放資源

代碼演示:

public class ObjectStreamDemo {

public static void main(String[] args) throws IOException, ClassNotFoundException {

/*

* 將一個對象存儲到持久化(硬盤)的設(shè)備上。

*/

writeObj();//對象的序列化。

}

public static void writeObj() throws IOException {

//1,明確存儲對象的文件。

FileOutputStream fos = new FileOutputStream("tempfile\\obj.object");

//2,給操作文件對象加入寫入對象功能。

ObjectOutputStream oos = new ObjectOutputStream(fos);

//3,調(diào)用了寫入對象的方法。

oos.writeObject(new Person("wangcai",20));

//關(guān)閉資源。

oos.close();

}

}


Person類

public class Person implements Serializable {

private String name;

private int age;

public Person() {

super();

}

public Person(String name, int age) {

super();

this.name = name;

this.age = age;

}

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;

}

@Override

public String toString() {

return "Person [name=" + name + ", age=" + age + "]";

}

}


二、同理,我們再來看對象反序列化流ObjectInputStream

ObjectInputStream 對以前使用 ObjectOutputStream 寫入的基本數(shù)據(jù)和對象進行反序列化。支持 java.io.Serializable接口的對象才能從流讀取。

java.io.ObjectInputStream extends InputStream

ObjectInputStream:對象的反序列化流

作用:

把文件中保存的對象,以流的方式讀取出來使用


構(gòu)造方法:

ObjectInputStream(InputStream in) 創(chuàng)建從指定 InputStream 讀取的 ObjectInputStream。


參數(shù):

InputStream in:字節(jié)輸入流


特有的成員方法:

Object readObject() 從 ObjectInputStream 讀取對象。


使用步驟:

1.創(chuàng)建ObjectInputStream對象,構(gòu)造方法中傳遞字節(jié)輸入流

2.使用ObjectInputStream對象中的方法readObject讀取保存對象的文件

3.釋放資源

4.使用讀取出來的對象(打印)


readObject方法聲明拋出了ClassNotFoundException(class文件找不到異常)

當(dāng)不存在對象的class文件時拋出此異常

反序列化的前提:

1.類必須實現(xiàn)Serializable

2.必須存在類對應(yīng)的class文件

代碼演示:

public class ObjectStreamDemo {

public static void main(String[] args) throws IOException, ClassNotFoundException {

readObj();//對象的反序列化。

}

public static void readObj() throws IOException, ClassNotFoundException {

//1,定義流對象關(guān)聯(lián)存儲了對象文件。

FileInputStream fis = new FileInputStream("tempfile\\obj.object");

//2,建立用于讀取對象的功能對象。

ObjectInputStream ois = new ObjectInputStream(fis);

Person obj = (Person)ois.readObject();

System.out.println(obj.toString());

}

}


本文我們只是對IO流中的對象反序列化流和對象序列化流做了初步的了解,了解了對象反序列化流和對象序列化流的基本概念和簡單的用法。IO流作為Java學(xué)習(xí)中的一個大的版塊,我們只是初窺門徑,想要學(xué)好IO流我們?nèi)沃囟肋h。觀看本站的Java 基礎(chǔ)教程,為你的學(xué)習(xí)之路更進一步!


提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 最近高清中文字幕大全免费1 | 黄色一级片免费播放 | 一级做a爰全过程免费视频 一级做a爰片鸭王 | 亚洲三级视频在线 | 小妖精抬起臀嗯啊h军人小说 | 国产一在线精品一区在线观看 | 妞妞影视一二三区 | 亚洲欧美日韩精品高清 | 国产欧美日韩在线观看 | 香蕉视频一级片 | 日本高清免费h色视频在线观看 | 成人观看天堂在线影片 | 搞黄网站在线观看 | 日日操免费视频 | 日韩黄色小视频 | 日本在线视频二区 | 最近更新中文字幕影视 | 亚洲另类图 | 免费精品国产 | 亚色在线视频 | 欧美三级香港三级日本三级 | 在线免费观看成人 | 曰韩精品 | 影音先锋日韩 | www.色网站 | 国产人成精品香港三级在 | 国产欧美一区二区三区在线 | 猛h辣h高h文湿重口 美日毛片 | 久久国产精品偷 | 亚洲精品午夜国产va久久成人 | 日本三级香港三级久久99 | 一级毛片一级毛片免费毛片 | 120秒午夜体验区5次 | 免费黄色三级网站 | 亚洲第一天堂无码专区 | 六月丁香激情综合成人 | 国产色视频网站 | 欧美一级鲁丝片免费看 | 又黄又猛又爽大片免费视频 | 禁止十八成人无限免费观看网站 | 天天看天天摸 |