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

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

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

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

在正式介紹 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 基礎教程,為你的學習之路更進一步!


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 中文字幕精品视频在线 | 亚洲综合久久久久久中文字幕 | 亚洲精品国产福利在线观看 | 国产欧美在线播放 | 91在线精品老司机免费播放 | 国产真实偷乱视频在线观看 | 国产高清看片日韩欧美久久 | 色老头老太做爰视频在线观看 | 日韩精品麻豆 | 国产亚洲综合精品一区二区三区 | 在线日韩一区 | 麻豆成人久久精品二区三区小说 | h在线观看免费 | 99热国产免费 | 欧美一区二区三区在线可观看 | 天天干天天摸 | 亚洲视频999| 久久久久琪琪免费影院 | 国产短视频精品区第一页 | 黄片毛片一级片 | 91久久香蕉国产线看 | 97人人网| 欧美a在线观看 | 成人久久| 青草视频.com| porno xxxx日本| 欧美精品一区二区三区观 | 欧美又乱又伦观看 | 97最新网址 | 精品欧美一区二区在线看片 | 久久久久久全国免费观看 | 四虎成人免费观看在线网址 | 色18美女社区 | 国产精品视频免费一区二区三区 | 国产亚洲精品一区二区久久 | 99视频精品全国在线观看 | 日本一级毛片私人影院 | 欧美极品福利视频在线播放 | 免费区欧美一级毛片 | 国产福利福利视频 | 日日操日日爽 |