1》序列化分为两大部分:
把Java对象转换为字节序列的过程称为对象的序列化。
把字节序列恢复为Java对象的过程称为对象的反序列化。
2》序列化的目的
1、以某种存储形式使自定义对象持久化;
2、将对象从一个地方传递到另一个地方。
3、使程序更具维护性
3》具体步骤:
序列化:通过ObjectOutputStream创建一个对象输出流,通过对象输出流的writeObject方法写入流对象.
反序列化 :创建一个对象输入流ObjectInputStream,通过对象输入流的readObject()方法读取对象。
代码示例如下:
/**
* 保存一个序列化的对象
*
*/
public void writeObject(String filename,Object o){
ObjectOutputStream writer = null;
try {
writer = new ObjectOutputStream(new FileOutputStream(filename));
writer.writeObject(o);
writer.flush();
writer.close();
} catch (FileNotFoundException e) { // 编译时异常
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 读一个序列化的对象
*
*/
public Object readObject(String filename){
ObjectInputStream reader = null;
try {
reader = new ObjectInputStream(new FileInputStream(filename));
Object result = reader.readObject();
reader.close();
return result;
} catch (FileNotFoundException e) { // 编译时异常
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
4》序列化应用:
示例一:
示例二:person类
5》优缺点:
优点:1.内建支持
· 2.易于实现
· 缺点:1.需要implements Serializable接口
2. 占用空间过大
· 3.由于额外的开销导致速度变比较慢
以上可以作为面试回答用;
- 大小: 253.3 KB
分享到:
相关推荐
在.NET框架中,有两种常见的序列化方式:二进制序列化和XML序列化。这两种方法各有优缺点,适用于不同的场景。 一、二进制序列化 二进制序列化是.NET框架提供的一种高效的数据序列化方式,它将对象转换为字节流,以...
### 二进制序列化与反序列化 #### 一、概述 在.NET框架中,序列化是一项重要的功能,它允许开发人员将对象的状态转换成一种可以存储或传输的形式。通常,序列化有两种主要实现方式:**二进制序列化**(通过`...
序列化 (serialization):将对象的状态信息转换为可以存储或传输的形式的过程。 与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。 序列化的目的 1、以某种存储形式使...
C#提供了多种序列化机制,如XML序列化、二进制序列化、JSON序列化等,每种都有其特定的应用场景。 二、XML序列化 XML序列化将对象转换为XML格式的字符串,易于阅读和交换。在C#中,可以使用`XmlSerializer`类实现...
- **JSON数据**:序列化二进制数据,使其能在JSON格式中传输。 - **文件存储**:将文件内容编码为Base64字符串,存储在数据库或其他文本文件中。 ### 7. 文件名列表中的"DeserializeStr" 在给定的压缩包文件中,...
C#自定义可序列化的Dictionary类型 在C#中,Dictionary类型是非常常用的数据结构,但是.NET 2.0中的泛型Dictionary却不支持XML序列化。这是一种非常不便的限制,因为在实际应用中,我们经常需要将数据序列化到XML...
这是一个用C#写的Socket服务器和客户端,当然Socket服务器和客户端不是主要的(有兴趣的朋友可以参考下),主要的内容是介绍如何通过这种Socket方式发送Object对象。 作者博客 http://luyugao.com
在C#中,我们可以使用.NET框架提供的`System.Runtime.Serialization.Formatters.Binary.BinaryFormatter`类来进行二进制序列化,或者使用`System.Xml.Serialization.XmlSerializer`来进行XML序列化。而在Java中,...
**二、JSON反序列化** 反序列化是将JSON字符串恢复为C++对象的过程。继续以nlohmann/json为例: 1. 从JSON字符串创建json对象: ```cpp std::string jsonString = R"({"name":"John","age":30})"; json j = json::...
Boost.Serialization提供了两种主要的序列化方式:文本序列化和二进制序列化。文本序列化通常更易于阅读和调试,但占用的存储空间较大;而二进制序列化则更为紧凑,节省空间,但可能难以直接查看。 1. **文本序列化...
本文将深入探讨Hessian框架的基础知识,它是一个高效的二进制序列化协议,广泛应用于Java和.NET之间跨语言通信。通过学习Hessian,我们可以更有效地处理数据传输,提高应用性能。 首先,让我们理解什么是序列化。...
本篇将深入探讨如何在C#中进行二进制数组与常规数组之间的转换,以及二进制序列化和JSON序列化的应用及其反序列化过程。 首先,让我们来看看二进制数组与常规数组之间的转换。在C#中,二进制数组通常用byte[]表示,...
在C#编程中,二进制序列化是一个重要的概念,它允许我们将对象的状态转换为字节流,以便存储或在网络上传输。这个过程是通过.NET框架提供的System.Runtime.Serialization命名空间中的类来实现的。本实例将深入探讨...
序列化是将一个对象的状态转换为可以存储或传输的形式,通常是XML、JSON或二进制格式。这样做的好处在于,我们可以保存对象的状态并在稍后恢复,或者将对象发送到远程服务器。在C#中,我们可以使用ISerializable接口...
本资源聚焦于C#中的二进制序列化,这是一种效率高、数据紧凑的序列化方式。下面将详细阐述二进制序列化的概念、使用方法以及它在实际开发中的应用。 二进制序列化是.NET框架提供的一种机制,它可以将对象转换为原始...
序列化DLL文件通常涉及将内存中的函数、变量和类结构转换为二进制流或XML等文本格式,以便在磁盘上保存或通过网络发送。反序列化则是将这个流恢复为原来的函数和数据结构,使其能够在应用程序中正常工作。 接下来,...
#### 二、序列化的应用场景 序列化在多种场景下都非常有用: 1. **对象持久化**:当你希望将内存中的对象状态保存到文件或数据库中时,序列化是一种非常有效的方式。例如,在游戏开发中,可以通过序列化保存玩家的...
相比于XML或JSON等文本格式,protobuf的序列化结果更小,解析速度更快,因为它是二进制编码。此外,protobuf提供了强大的类型定义,支持复杂的数据结构,包括消息嵌套、数组和枚举类型,使得数据结构更加清晰和易于...
序列化是指将一个对象的状态转换为可存储或传输的形式,通常是二进制流;反序列化则相反,是将这个二进制流恢复为原来的对象。在本案例中,我们将关注如何将文本信息加密成二进制文件,以确保数据的安全性和不可读性...
在IT行业中,序列化和反序列化是两个关键的概念,特别是在对象持久化、数据传输以及存储方面。在Delphi编程环境中,这两个概念同样至关重要。本文将深入探讨Delphi中的序列化与反序列化,以及如何处理组件和结构体的...