大战熟女丰满人妻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秒拍福利大尺度视频 | 狠狠色狠狠色很很综合很久久 | 久久的爱久久的你 | 美女超爽久久久久网站 | 中文字幕在线免费观看视频 | 99精品国产在现线免费 | 俺来也俺来也天天夜夜视频 | 久久国内精品自在自线400部o | 日本黄色小视频在线观看 | 久久精品国内偷自一区 | 午夜国产精品理论片久久影院 | 日本乱中文字幕系列在线观看 | 久久久久久久免费视频 | 欧美激情在线播放一区二区 | a级在线观看视频 | 男女羞羞免费视频 | 午夜dy888理论不卡达达兔 | 特黄特色一级aa毛片免费观看 | 成人在线免费小视频 | 国产99小视频 | 日韩精品欧美国产精品亚 | 一级爱| 久久福利免费视频 | 欧美毛片一级的免费的 | 成人性色生活片免费网 | xxxx国产片| 另类亚洲视频 | 伊人色视频| 精品一区二区久久 | 天天躁日日躁狠狠躁综合 | 久久久久久色 | 亚洲香蕉国产高清在线播放 | 60岁妇女毛片 | 青青青青在线成人视99 | 亚洲综合精品一区二区三区中文 | 亚洲伊人tv综合网色 | 欧美日韩亚毛片免费观看 |