序列化

提供 Julia 物件的序列化。

Serialization.serialize函式
serialize(stream::IO, value)

以不透明格式將任意值寫入串流,以便 deserialize 可以讀回。讀回值將與原始值盡可能相同,但請注意,Ptr 值會序列化為全零位元模式 (NULL)。

8 位元組識別標頭會先寫入串流。若要避免寫入標頭,請建構一個 Serializer,並將其用作 serialize 的第一個引數。另請參閱 Serialization.writeheader

資料格式可能會在 Julia 的次要版本 (1.x) 中變更,但先前 1.x 版本所寫入的檔案仍可讀取。主要的例外情況是外部套件中類型的定義變更時。如果發生這種情況,可能需要在您的環境中指定受影響套件的明確相容版本。重新命名套件中的函式,甚至是私有函式,也可能導致現有檔案不同步。匿名函式需要特別注意:由於其名稱是自動產生的,因此次要的程式碼變更可能會導致它們被重新命名。在打算長期儲存的檔案中應避免序列化匿名函式。

在某些情況下,讀寫機器必須匹配字元大小 (32 或 64 位元)。在更罕見的情況下,作業系統或架構也必須匹配,例如在使用包含與平台相關程式碼的套件時。

serialize(filename::AbstractString, value)

開啟檔案並將給定的值序列化到其中。

Julia 1.1

此方法自 Julia 1.1 起可用。

Serialization.deserialize函式
deserialize(stream)

讀取由 serialize 寫入的值。deserialize 假設從 stream 讀取的二進位資料是正確的,且已由 serialize 的相容實作序列化。deserialize 旨在追求簡潔性和效能,因此不會驗證讀取的資料。格式錯誤的資料可能會導致程序終止。呼叫者必須確保從 stream 讀取的資料的完整性和正確性。

deserialize(filename::AbstractString)

開啟檔案並將其內容反序列化。

Julia 1.1

此方法自 Julia 1.1 起可用。

Serialization.writeheader函式
Serialization.writeheader(s::AbstractSerializer)

寫一個標示標頭到指定的序列化器。標頭由下列 8 個位元組組成

位移說明
0標籤位元組 (0x37)
1-2簽章位元組 "JL"
3通訊協定版本
4位元 0-1:位元組順序:0 = 小端,1 = 大端
4位元 2-3:平台:0 = 32 位元,1 = 64 位元
5-7保留