import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; /* * 对象序列化为字节流 * 和字节流 反序列化为对象的工具类 */ public class SerializableUtil { public static byte[] toByte(Object obj) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 为什么这里要用oos, 因为ois 只能读oos写的.... 要不然EOF... ObjectOutputStream oos = null; byte[] bytes = null; try { oos = new ObjectOutputStream(baos); oos.writeObject(obj); bytes = baos.toByteArray(); } catch (IOException e1) { e1.printStackTrace(); } finally { if(baos != null) { try { baos.close(); } catch (IOException e) { e.printStackTrace(); } } if(oos != null) { try { oos.close(); } catch (IOException e) { e.printStackTrace(); } } } return bytes; } public static Object toObject(byte[] bytes) { ByteArrayInputStream bais = new ByteArrayInputStream(bytes); ObjectInputStream ois = null; Object obj = null; try { ois = new ObjectInputStream(bais); obj = ois.readObject(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { if(bais != null) { try { bais.close(); } catch (IOException e) { e.printStackTrace(); } } if(ois != null) { try { ois.close(); } catch (IOException e) { e.printStackTrace(); } } } return obj; } }
相关推荐
序列化是将对象转换为可存储或传输的形式,如字节流或文本,而反序列化则是将这些形式恢复为原始对象。C#中的`System.Runtime.Serialization`命名空间提供了多种序列化工具,如`DataContractSerializer`、`...
* 序列化时,需要使用 ObjectOutputStream 将对象序列化为字节流。 * 反序列化时,需要使用 ObjectInputStream 将字节流反序列化回对象。 * 序列化和反序列化过程中,需要注意版本号问题,否则可能会导致反序列化...
Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...
Java 对象序列化是一种将Java对象的状态转换成字节流的过程,以便于在网络上传输或存储到磁盘上。Java序列化标准定义了一套规则来描述如何将Java对象转换为可以被序列化的形式。 **1.2 写入对象流** 当一个对象被...
1. **定义**: Java对象序列化是将Java对象转换为字节流的过程,以便可以存储在磁盘上或在网络上传输。它允许我们将对象的状态保存下来,即使程序关闭,下次启动时也能恢复到之前的状态。 2. **接口**: 实现序列化的...
- 网络传输:在网络应用中,可以将对象序列化为字节流,然后通过网络发送,接收端再进行反序列化。 - RMI(远程方法调用):序列化是RMI实现的基础,因为需要将对象从一个JVM传递到另一个JVM。 8. **序列化安全...
序列化的过程就是对象写入字节流和从字节流中读取对象。将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其保存到文件中,管道到另一线程中或通过网络连接将对象数据发送到另一主机。对象序列化功能...
当两个Java进程需要通过网络通信时,由于网络只支持二进制数据的传输,因此需要将Java对象转换为字节流,然后在接收方再将字节流还原为原来的对象,这个过程就是反序列化。 Java提供了一套标准的序列化API,包括`...
序列化涉及将对象转换为字节流,而克隆是直接创建一个与原对象具有相同属性的新对象,通常通过实现`Cloneable`接口并覆盖`clone()`方法来实现。 9. **序列化框架** 除了Java内置的序列化机制,还有许多第三方框架...
在Java编程语言中,字节流、字符流、对象流和序列化是处理数据传输和存储的核心概念。这些概念在程序设计中起着至关重要的作用,尤其是在进行输入输出操作时。下面将对这些主题进行详细解释。 1. 字节流(Byte ...
Java对象序列化是一种将Java对象转换为字节流的过程,以便可以存储在磁盘上、在网络上传输或在任何其他需要持久化数据的场景中使用。这个过程涉及到两个主要概念:序列化(Marshalling)和反序列化(Unmarshalling)...
Java对象序列化是一种将对象转换为字节流的过程,以便可以将其存储在磁盘上,或者在网络中进行传输。这是Java平台提供的一种功能,允许程序员将任何Java对象持久化,即将其状态保存到磁盘,或者在网络中进行传输。...
Java对象序列化是一种将Java对象转换为字节流的过程,以便可以存储这些对象或通过网络进行传输。这个过程是Java平台的核心特性,它允许开发者将复杂的对象结构持久化或者在网络间进行安全通信。序列化不仅可以用于...
1. **概念**:反序列化是将已序列化的字节流恢复为原来的Java对象的过程。 2. **过程**:通过`ObjectInputStream`的`readObject()`方法,可以将字节流还原为与原始对象等效的新对象。 3. **安全问题**:反序列化过程...
序列化是将一个对象转换为字节流的过程,而反序列化则是将字节流还原为原来的对象。这两个过程在许多场景下都非常有用,比如在网络传输、存储到磁盘或数据库、以及实现跨进程通信时。 首先,我们需要了解`...
Java对象序列化是Java平台提供的一种机制,允许将对象的状态转换为字节流,以便存储在磁盘上、通过网络传输或在不同时间点恢复。这个过程涉及到将一个复杂的Java对象模型转换为简单的二进制表示,使得数据可以在不同...
在Java编程中,对象序列化是一种将对象的状态转换为字节流的过程,以便可以存储或在网络上传输。而在反序列化时,这个字节流又可以恢复为原来的对象。Java提供了一个方便的机制来实现这一点,即`java.io....
在描述中提到,`Student`对象包含了图片,这种情况下二进制序列化可以高效地处理图像数据,因为它是原始字节流。 2. **SOAP序列化(SOAP Serialization)** SOAP序列化将对象转换为符合SOAP标准的XML消息,适合于...
2. **序列化对象**:使用语言提供的序列化库(如Java的`ObjectOutputStream`,C#的`BinaryFormatter`)将对象转换为字节流。 3. **建立TCP连接**:使用Socket编程创建一个TCP连接,通常包括服务器端的监听和客户端...