首頁 > Java > java教程 > 如何將 Java 可序列化物件與位元組陣列相互轉換?

如何將 Java 可序列化物件與位元組陣列相互轉換?

Susan Sarandon
發布: 2025-01-03 04:52:39
原創
901 人瀏覽過

How to Convert Java Serializable Objects to Byte Arrays and Back?

將Java 可序列化物件轉換為位元組陣列

在需要透過網路傳輸Java 物件或以二進位格式儲存它們的情況下,將它們轉換為位元組數組可能是必不可少的。讓我們考慮一個場景,其中我們有一個可序列化的類別 AppMessage。要透過套接字將AppMessage 實例傳送到另一台機器並根據接收到的位元組重建它們,我們可以按照以下步驟操作:

序列化:將物件轉換為位元組數組

  1. 準備ByteArrayOutputStream:建立一個ByteArrayOutputStream作為序列化後的暫存
  2. ObjectOutputStream: 使用 ObjectOutputStream 將物件寫入 ByteArrayOutputStream。
  3. 刷新並讀取位元組: 刷新 ObjectOutputStream以確保所有資料寫入位元組緩衝區並從中檢索位元組數組ByteArrayOutputStream.

此過程的程式碼片段:

static byte[] serialize(final Object obj) {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();

    try (ObjectOutputStream out = new ObjectOutputStream(bos)) {
        out.writeObject(obj);
        out.flush();
        return bos.toByteArray();
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }
}
登入後複製

反序列化:從位元組陣列重建物件

  1. 建立一個ByteArrayInputStream:使用下列命令將位元組陣列轉換回輸入流ByteArrayInputStream.
  2. ObjectInputStream:從 ByteArrayInputStream 建立一個 ObjectInputStream 來讀取物件資料。
  3. readObject():使用readObject() 方法從位元組流重建原始物件

對應程式碼snippet:

static Object deserialize(byte[] bytes) {
    ByteArrayInputStream bis = new ByteArrayInputStream(bytes);

    try (ObjectInput in = new ObjectInputStream(bis)) {
        return in.readObject();
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }
}
登入後複製

使用這些方法,您可以透過網路高效地傳送可序列化對象,例如AppMessage 實例,並在接收端重建它們。

以上是如何將 Java 可序列化物件與位元組陣列相互轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板