Java將對(duì)象寫入文件讀出_序列化與反序列化的實(shí)例
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();
}
}
}
讀?。?/strong>
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ì)是遞歸的方式。
以上這篇Java將對(duì)象寫入文件讀出_序列化與反序列化的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
idea插件生成jpa實(shí)體類的實(shí)現(xiàn)示例
本文主要介紹了idea插件生成jpa實(shí)體類的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01
Java多線程和并發(fā)基礎(chǔ)面試題(問(wèn)答形式)
多線程和并發(fā)問(wèn)題是Java技術(shù)面試中面試官比較喜歡問(wèn)的問(wèn)題之一。在這里,從面試的角度列出了大部分重要的問(wèn)題,感興趣的小伙伴們可以參考一下2016-06-06
SpringBoot自動(dòng)配置實(shí)現(xiàn)流程詳細(xì)分析
這篇文章主要介紹了SpringBoot自動(dòng)配置原理分析,SpringBoot是我們經(jīng)常使用的框架,那么你能不能針對(duì)SpringBoot實(shí)現(xiàn)自動(dòng)配置做一個(gè)詳細(xì)的介紹。如果可以的話,能不能畫(huà)一下實(shí)現(xiàn)自動(dòng)配置的流程圖。牽扯到哪些關(guān)鍵類,以及哪些關(guān)鍵點(diǎn)2022-12-12
java項(xiàng)目中使用 Lombok遇到的問(wèn)題小結(jié)
這篇文章主要介紹了java項(xiàng)目中使用 Lombok遇到的問(wèn)題小結(jié),需要的朋友可以參考下2018-07-07
SpringBoot熔斷機(jī)制之CircuitBreaker詳解
這篇文章主要介紹了SpringBoot熔斷機(jī)制之CircuitBreaker詳解,SpringBoot的熔斷機(jī)制在微服務(wù)架構(gòu)中扮演著重要角色,其中CircuitBreaker是其核心機(jī)制之一,用于防止服務(wù)的異常狀態(tài)影響到整個(gè)系統(tǒng)的運(yùn)作,需要的朋友可以參考下2023-10-10
mybatis報(bào)Query?was?Empty異常的問(wèn)題
這篇文章主要介紹了mybatis報(bào)Query?was?Empty異常的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot添加Email發(fā)送功能及常見(jiàn)異常詳解
本篇文章主要介紹了SpringBoot添加Email發(fā)送功能及常見(jiàn)異常詳解,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04
SpringBoot啟動(dòng)security后如何關(guān)閉彈出的/login頁(yè)面
這篇文章主要介紹了SpringBoot啟動(dòng)security后如何關(guān)閉彈出的login頁(yè)面問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12

