日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

I/O(输入/输出)---序列化与反序列化

發(fā)布時間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 I/O(输入/输出)---序列化与反序列化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

概念:

  序列化就是將對象的狀態(tài)存儲到特定的介質(zhì)中的過程,也就是將對象狀態(tài)轉(zhuǎn)換為可保持或傳輸格式的過程。

  反序列化則是從特定存儲介質(zhì)中將數(shù)據(jù)重新構(gòu)建對象的過程。可以將存儲在文件上的對象信息讀取,然后重新構(gòu)建為對象。

?

過程:

  將對象的公有成員、私有成員包括類名,轉(zhuǎn)換為字節(jié)流---》寫入數(shù)據(jù)流---》存儲到存儲介質(zhì)中(文件)。

意義:

  將java對象序列化后,可以將其轉(zhuǎn)換為自己序列,這樣就可以保存在磁盤上,也可以借助網(wǎng)絡(luò)進(jìn)行傳輸。

  對象的保存是二進(jìn)制狀態(tài),實現(xiàn)了平臺的無關(guān)性。

import java.io.Serializable; /** Serializable:用于給被序列化的類加入ID號。* 用于判斷類和對象是否是同一個版本。 */ //Person誒實現(xiàn)Serializable接口,代表這個類可被序列化 public class Person implements Serializable/*標(biāo)記接口*/ {/*** transient:非靜態(tài)數(shù)據(jù)不想被序列化可以使用這個關(guān)鍵字修飾。 */private static final long serialVersionUID = 9527l;private transient String name;private static int age;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;}}

?

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import cn.itcast.io.p2.bean.Person;public class ObjectStreamDemo {/*** @param args* @throws IOException * @throws ClassNotFoundException */public static void main(String[] args) throws IOException, ClassNotFoundException {// writeObj(); readObj();}public static void readObj() throws IOException, ClassNotFoundException {//ObjectInputStream 對象輸入流ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.object"));//對象的反序列化。需要類型轉(zhuǎn)換。 Person p = (Person)ois.readObject();System.out.println(p.getName()+":"+p.getAge());ois.close();}public static void writeObj() throws IOException, IOException {//ObjectInputStream 對象輸出流ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.object"));//對象序列化。 被序列化的對象必須實現(xiàn)Serializable接口。 oos.writeObject(new Person("小強(qiáng)",30));oos.close();}}

?

轉(zhuǎn)載于:https://www.cnblogs.com/fifiyong/p/6010652.html

總結(jié)

以上是生活随笔為你收集整理的I/O(输入/输出)---序列化与反序列化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。