摘要:與的作用是對基本數(shù)據(jù)和對象進(jìn)行序列化操作進(jìn)行支持。如果檢測到反序列化的類的和對象二進(jìn)制流的不同,則會(huì)拋出異常。
ObjectInputStream與ObjectOutputStream的作用是:對基本數(shù)據(jù)和對象進(jìn)行序列化操作進(jìn)行支持。其中ObjectInputStream對象提供對基本數(shù)據(jù)和對象對持久存儲(chǔ),當(dāng)我們需要讀取這些存儲(chǔ)這些基本數(shù)據(jù)或?qū)ο髸r(shí),可以創(chuàng)建文件輸入流對應(yīng)的ObjectInputStream,進(jìn)而讀取這些基本數(shù)據(jù)或?qū)ο蟆? 序列化有關(guān)的基礎(chǔ)知識(shí): 1 需要序列化的類必須實(shí)現(xiàn)java.io.Serializable接口,否則會(huì)拋出NotSerializableException異常。 2 如果檢測到反序列化的類的serialVersionUID和對象二進(jìn)制流的serialVersionUID不同,則會(huì)拋出異常。 3 Java序列化會(huì)將一個(gè)類中包含的引用中的所有的成員變量保存下來,所以里面的引用類型也要實(shí)現(xiàn)java.io.Serializable的接口。 4 對于不用采用默認(rèn)序列化或無需序列化的成員變量,可以添加transient關(guān)鍵字,并不是說添加了transient關(guān)鍵字就一定不能序列化。 5 每一個(gè)類可以實(shí)現(xiàn)readObject、writeObject等方法實(shí)現(xiàn)自己的序列化策略,即使是transient修飾的成員變量也可以手動(dòng)調(diào)用ObjectOutputStream的write*等方法,將成員變量序列化。 ObjectOutputStream 有關(guān)方法 1 public ObjectOutputStream(OutputStream out) throws IOException {} * 創(chuàng)建一個(gè)ObjectOutputStream去寫入指定的OutputStream,此構(gòu)造函數(shù)將序列化流頭寫入底層流,調(diào)用者需要立即刷新流,以確保用于接收ObjectInputStreams的構(gòu)造函數(shù)在讀取該頭時(shí)不會(huì)阻塞。 2 protected ObjectOutputStream() throws IOException, SecurityException {} * 為完全重新實(shí)現(xiàn)ObjectOutputStream的子類提供一種方法,使其不必分配僅由ObjectOutputStream的實(shí)現(xiàn)使用的私有數(shù)據(jù) 3 public void useProtocolVersion(int version) throws IOException {} * 指定在編寫流時(shí)使用的流協(xié)議版本 4 public final void writeObject(Object obj) throws IOException {} * 將指定的對象寫入ObjutoExtStudio流,對象的類、類的簽名、類及其所有超類型的非瞬態(tài)和非靜態(tài)字段的值都可以通過該方法寫入,重寫writeObject和readObject方法可以將默認(rèn)的序列號重寫,該對象引用的對象是通過傳遞方式編寫的,以便ObjectInputStream可以重構(gòu)等效的、完整的對象。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/72005.html
摘要:序列化提供的一種對象序列化的機(jī)制,在該機(jī)制中,一個(gè)對象可以被表示為一個(gè)字節(jié)序列,該字節(jié)序列包括對象的數(shù)據(jù)有關(guān)對象的類型的信息和存儲(chǔ)在對象中的數(shù)據(jù)類型。類和是高程次的數(shù)據(jù)流,他們包含序列化和反序列化對象的方法。 序列化:Java提供的一種對象序列化的機(jī)制,在該機(jī)制中,一個(gè)對象可以被表示為一個(gè)字節(jié)序列,該字節(jié)序列包括對象的數(shù)據(jù)、有關(guān)對象的類型的信息、和存儲(chǔ)在對象中的數(shù)據(jù)類型。 反序列化:將...
摘要:是從文件系統(tǒng)中的文件中獲取字節(jié),至于什么文件,取決于主機(jī)環(huán)境,用于讀取原始字節(jié)流,如圖像數(shù)據(jù),假如想要讀取字符類型流,請使用。跳過個(gè)字節(jié)本地方法關(guān)閉文件輸入流 FileInputStream是從文件系統(tǒng)中的文件中獲取字節(jié),至于什么文件,取決于主機(jī)環(huán)境,F(xiàn)ileInputStream用于讀取原始字節(jié)流,如圖像數(shù)據(jù),假如想要讀取字符類型流,請使用FileReader。 ...
摘要:是繼承與的子類常用屬性文件描述符是否在文件尾部開始追加寫入用于讀寫映射操作文件的通道文件的路徑一個(gè)關(guān)閉鎖,只在方法中使用,確保多線程同步調(diào)用構(gòu)造函數(shù)創(chuàng)建一個(gè)向指定對應(yīng)的文件中寫入數(shù)據(jù)的文件輸出流創(chuàng)建一個(gè)向指定對應(yīng)的文件中寫入數(shù)據(jù)的文件輸出流 FileOutputStream 是繼承與OutputStream的子類 1 常用屬性 private final FileDescriptor...
摘要:直接繼承與,實(shí)現(xiàn)了接口和接口,實(shí)現(xiàn)接口,意味著對象支持序列化操作,而實(shí)現(xiàn)接口,意味著之間可以比較大小。刪除此抽象路徑名表示的文件或目錄。標(biāo)記此抽象路徑名指定的文件或目錄,從而只能對其進(jìn)行讀操作。 showImg(https://segmentfault.com/img/bVbi3ls?w=2048&h=164);1 File直接繼承與Object,實(shí)現(xiàn)了Serializable接口和C...
摘要:但它融合了和的功能。支持對隨機(jī)訪問文件的讀取和寫入。的概述和作為集合的使用了解的概述類表示了一個(gè)持久的屬性集。可保存在流中或從流中加載。屬性列表中每個(gè)鍵及其對應(yīng)值都是一個(gè)字符串。 1_序列流(了解) 1.什么是序列流 序列流可以把多個(gè)字節(jié)輸入流整合成一個(gè), 從序列流中讀取數(shù)據(jù)時(shí), 將從被整合的第一個(gè)流開始讀, 讀完一個(gè)之后繼續(xù)讀第二個(gè), 以此類推. 2.使用方式 整合兩個(gè): S...
閱讀 3111·2021-10-13 09:40
閱讀 3966·2021-09-22 15:51
閱讀 1511·2021-09-22 15:48
閱讀 1079·2021-09-06 15:00
閱讀 1803·2019-08-30 15:43
閱讀 2371·2019-08-29 18:35
閱讀 1683·2019-08-29 16:18
閱讀 3627·2019-08-29 12:49