大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

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

更新時間:2020-11-18 17:14:44 來源:動力節點 瀏覽1117次

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

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


反序列化:該字節序列還可以從文件中讀取回來,重構對象,對它進行反序列化。對象的數據、對象的類型和對象中存儲的數據信息,都可以用來在內存中創建對象。

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

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

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


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

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

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

java.io.ObjectOutputStream extends OutputStream

ObjectOutputStream:對象的序列化流

作用:

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


構造方法:

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


參數:

OutputStream out:字節輸出流

特有的成員方法:

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


使用步驟:

1.創建ObjectOutputStream對象,構造方法中傳遞字節輸出流

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

3.釋放資源

代碼演示:

public class ObjectStreamDemo {

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

/*

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

*/

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

}

public static void writeObj() throws IOException {

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

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

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

ObjectOutputStream oos = new ObjectOutputStream(fos);

//3,調用了寫入對象的方法。

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

//關閉資源。

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 寫入的基本數據和對象進行反序列化。支持 java.io.Serializable接口的對象才能從流讀取。

java.io.ObjectInputStream extends InputStream

ObjectInputStream:對象的反序列化流

作用:

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


構造方法:

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


參數:

InputStream in:字節輸入流


特有的成員方法:

Object readObject() 從 ObjectInputStream 讀取對象。


使用步驟:

1.創建ObjectInputStream對象,構造方法中傳遞字節輸入流

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

3.釋放資源

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


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

當不存在對象的class文件時拋出此異常

反序列化的前提:

1.類必須實現Serializable

2.必須存在類對應的class文件

代碼演示:

public class ObjectStreamDemo {

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

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

}

public static void readObj() throws IOException, ClassNotFoundException {

//1,定義流對象關聯存儲了對象文件。

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學習中的一個大的版塊,我們只是初窺門徑,想要學好IO流我們任重而道遠。觀看本站的Java 基礎教程,為你的學習之路更進一步!


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 99精品国产高清自在线看超 | 中文字幕亚洲一区二区va在线 | 久久精品加勒比中文字幕 | 成人精品一区二区三区 | 色婷婷色综合缴情在线 | 国产做国产爱免费视频 | 欧美一区二区在线视频 | 亚洲在线免费 | 麻豆亚洲一区 | 久久一级片 | 天堂成人在线视频 | 久久青草社区 | 久久手机精品视频 | 91精品国产综合久久精品 | 狠狠色噜噜狠狠狠狠97 | 九色 91| 婷婷自拍 | 噜噜噜天天躁狠狠躁夜夜精品 | 99爱网站| 毛茸茸free牲交 | 性大交 | 国产精品久久久久久免费 | 欧美亚洲国产另类在线观看 | 精品久久中文字幕 | 中文字幕亚洲一区二区v@在线 | 天天干天天干天天干天天干天天干 | 国产精品揄拍100视频 | 青春草国产成人精品久久 | 色一情一乱一乱91av | 天天干天天摸天天操 | 十八毛片 | 久久国产首页 | 精品动漫中文字幕一区二区三区 | 久久伊伊香蕉综合精品 | 欧美一区精品二区三区 | 九九视频在线 | 青草视频网址 | 97久久国产一区二区三区四区 | 4hu永久影院在线四虎 | 农村女人十八毛片a级毛片 农村三级孕妇视频在线 | 亚洲精品123区 |