資源描述:
《淺談java序列化與反序列化》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、首先解釋兩個(gè)概念'何為序列化?何為反序列化?序列化:將對(duì)象轉(zhuǎn)化成流的過(guò)程稱為序列化反序列化:將流轉(zhuǎn)化成對(duì)象的過(guò)程稱之為反序列化序列化與反序列化必須遵守的原則a)Java對(duì)象在java中要想使一個(gè)java乂寸象可以實(shí)現(xiàn)序列化與反序列化,必須讓該類實(shí)現(xiàn)java?io?Serializmb丄0接口java.io.Serializable接口定義如下:publicinterfaceSerializable{}從上述定義屮可以看到該接口屮未定義任何方法,這大大的簡(jiǎn)化了開發(fā)者b)序列化主要依賴java.io.ObjectOutput
2、Stream類,該類對(duì)java.io.FileOutputStream進(jìn)一步做了封裝,這里主要使用ObjectOutputStrearn類的writeObject()方法實(shí)現(xiàn)序列化功能Demo:★將對(duì)象序列化到磁盤文件中*@paramo*@throwsException*/publicstaticvoidwriteObject(Objecto)throwsExceptioFilef=newFile(nd:n"userif(f?exists()){f.delete();}FileOutputStreamos=newFile
3、OutputStream(f);//ObjectOutputStream核心類ObjectOutputstreamoos=newObjectOutputStream(os);oos.writeObject(o);oos?close();os?close();a)反序列化主要依賴java?io.ObjectInputstream類/該類對(duì)java.io.Inputstream進(jìn)一步做了封裝,這里主要使用ObjectInputStream類的readObject()方法實(shí)現(xiàn)序列化功能★反序列化,將磁盤文件轉(zhuǎn)化為對(duì)象*@par
4、amf*@return*@throwsException*/publicstaticUserreadobject(Filef)throwsException!Inputstreamis=newFileinputstream(f);//ObjectOutputStream核心類ObjectInputStreamois=newObjectlnputStream(is);return(User)ois-readobject();貼岀完整的demoJava對(duì)象:packagecom>ioebean;importjava.io.S
5、erializable;publicclassUserimplementsSerializable{privateintuserld;privateStringuserName;privateStringuserSex;privateintuserAge;publicintgetUserAge(){returnuserAge;}publicvoidsetUserAge(intuserAge){this?userAge=userAge;}publicintgetUserld(){returnuserid;}publievo
6、idsetUserld(intuserid){this.userid=userid;}publicStringgetUserName(){returnuserName;}publievoidsetUserName(StringuserName){this?userName=userName;}publicStringgetUserSex(){returnuserSex;}publievoidsetUserSex(StringuserSex){this?userSex=userSex;}QOverridepublicStr
7、ingtoString(){returnthis?getUserId()+"n+this?getUserName()+ftn+this?getUserSex()+”H+this.getUserAge();序列化少反序列化packagecom.io?test;importjava?io.File;importjava?io?FileInputStream;importjava?io?FileOutputStream;importjava.io.InputStream;importjava.io.ObjectlnputStr
8、eam;importjava.io?ObjectOutputStream;importcom>io?bean?User;publicclassTestSerializable{/**★將對(duì)彖序列化到磁盤文件屮*@paramo*@throwsException*/publicstaticvoidwriteObject(