Java 序列化和反序列化是一種持久化機制,用於將物件儲存為位元組序列。序列化使用 java.io.Serializable 介面和 ObjectOutputStream,將物件寫入檔案或網路。反序列化使用 ObjectInputStream,從檔案或網路中讀取位元組序列並重建原始物件。序列化和反序列化在 Java 中用於持久化對象,例如持久化使用者物件以便日後重新載入。
Java 序列化與反序列化的深入指南
簡介
序列化是指將物件以位元組形式儲存在檔案中或網路中,以便以後可以進行反序列化並重建原始物件。反序列化與之相反,它將位元組形式的資料轉換為原始物件。
序列化
在 Java 中,可以使用 java.io.Serializable
介面對物件進行序列化。要將物件序列化到檔案中,可以使用ObjectOutputStream
:
// 创建一个对象要序列化的 FileOutputStream FileOutputStream fileOut = new FileOutputStream("object.ser"); // 使用 ObjectOutputStream 将对象写入文件中 ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(myObject); // 关闭 ObjectOutputStream out.close();
反序列化
##要從檔案中反序列化對象,可以使用ObjectInputStream:
// 创建一个 FileInputStream 以读取序列化的文件 FileInputStream fileIn = new FileInputStream("object.ser"); // 使用 ObjectInputStream 从文件中读取对象 ObjectInputStream in = new ObjectInputStream(fileIn); MyObject myDeserializedObject = (MyObject) in.readObject(); // 关闭 ObjectInputStream in.close();
實戰案例:持久化使用者對象
假設我們有一個User 對象,我們需要將其儲存在文件中以進行持久化處理。我們可以這樣做:
// 创建一个 User 对象 User user = new User("John", "Doe"); // 将 User 对象序列化到文件中 FileOutputStream fileOut = new FileOutputStream("user.ser"); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(user); out.close(); // 从文件中反序列化 User 对象 FileInputStream fileIn = new FileInputStream("user.ser"); ObjectInputStream in = new ObjectInputStream(fileIn); User deserializedUser = (User) in.readObject(); in.close(); // 确认反序列化的 User 对象 System.out.println(deserializedUser.getName() + " " + deserializedUser.getLastName()); // 打印:John Doe
結論
Java 序列化是用來物件持久化的強大機制。透過java.io.Serializable 介面和
ObjectOutputStream 和
ObjectInputStream 類,我們可以輕鬆地序列化和反序列化物件。
以上是如何進行java序列化與反序列化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!