首頁 >Java >java教程 >如何在 Java 物件與位元組數組之間進行序列化和反序列化?

如何在 Java 物件與位元組數組之間進行序列化和反序列化?

DDD
DDD原創
2024-12-17 18:27:11717瀏覽

How Can I Serialize and Deserialize Java Objects to and from Byte Arrays?

在 Java 中將可序列化物件轉換為位元組數組

在 Java 中,Serialized 介面允許將物件轉換為位元組流。當物件需要透過網路傳輸或儲存在資料庫中時,此功能至關重要。

將物件編碼為位元組數組

要將物件編碼為位元組數組,可以使用執行以下步驟:

  1. 實例化一個 ByteArrayOutputStream 物件。
  2. 建立一個使用 ByteArrayOutputStream 作為輸出流的 ObjectOutputStream 物件。
  3. 使用 writeObject 方法將物件寫入 ObjectOutputStream。
  4. 刷新 ObjectOutputStream 以確保所有資料都寫入 ByteArrayOutputStream。
  5. 使用toByteArray 從ByteArrayOutputStream 中擷取位元組陣列

從位元組陣列中解碼物件

要從位元組陣列中解碼物件:

  1. 實例化一個使用位元組數組的ByteArrayInputStream 物件。
  2. 使用 ByteArrayInputStream 作為其物件建立一個 ObjectInputStream 物件輸入流。
  3. 使用 readObject 方法從 ObjectInputStream 讀取物件。

範例程式碼

這裡是用於序列化和反序列化:

序列化:

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);
    }
}

序列化:

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);
    }
}

反序列化:

透過這些方法,你可以輕鬆轉換物件與位元組數組之間的傳入和傳出,使您能夠透過網路傳輸資料或將其持久保存到儲存。

以上是如何在 Java 物件與位元組數組之間進行序列化和反序列化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn