溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在Java項(xiàng)目中利用序列化與反序列化將對(duì)象文件寫入與導(dǎo)出

發(fā)布時(shí)間:2020-12-02 15:24:06 來(lái)源:億速云 閱讀:255 作者:Leah 欄目:編程語(yǔ)言

如何在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ì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI