您好,登錄后才能下訂單哦!
如何在Java項(xiàng)目中利用序列化與反序列化將對(duì)象文件寫入與導(dǎo)出?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
Java類中對(duì)象的序列化工作是通過(guò)ObjectOutputStream和ObjectInputStream來(lái)完成的。
寫入:
File aFile=new File("e:\\c.txt"); Stu a=new Stu(1, "aa", "1"); FileOutputStream fileOutputStream=null; try { fileOutputStream = new FileOutputStream(aFile); ObjectOutputStream objectOutputStream=new ObjectOutputStream(fileOutputStream); objectOutputStream.writeObject(a); objectOutputStream.flush(); objectOutputStream.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { if(fileOutputStream!=null) { try { fileOutputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
讀取:
FileInputStream fileInputStream=new FileInputStream(aFile); ObjectInputStream objectInputStream=new ObjectInputStream(fileInputStream); Stu s=(Stu)objectInputStream.readObject(); System.out.println(s);
注意:
對(duì)于任何需要被序列化的對(duì)象,都必須要實(shí)現(xiàn)接口Serializable,它只是一個(gè)標(biāo)識(shí)接口,本身沒(méi)有任何成員,只是用來(lái)標(biāo)識(shí)說(shuō)明當(dāng)前的實(shí)現(xiàn)類的對(duì)象可以被序列化。
如果在類中的一些屬性,希望在對(duì)象序列化過(guò)程中不被序列化,使用關(guān)鍵字transient標(biāo)注修飾就可以。當(dāng)對(duì)象被序列化時(shí),標(biāo)注為transient的成員屬性將會(huì)自動(dòng)跳過(guò)。如果一個(gè)可序列化的對(duì)象包含某個(gè)不可序列化對(duì)象的引用,那么序列化操作會(huì)失敗,會(huì)拋出NotSerializableException異常,那么將這個(gè)引用標(biāo)記transient,就可以序列化了。
當(dāng)一個(gè)對(duì)象被序列化時(shí),只保存對(duì)象的非靜態(tài)成員變量,不能保存任何的成員方法,靜態(tài)的成員變量。
如果一個(gè)對(duì)象的成員變量是一個(gè)對(duì)象,那么這個(gè)對(duì)象的數(shù)據(jù)成員也會(huì)被保存還原,而且會(huì)是遞歸的方式。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。