`

对象序列化字节流 与 字节流发序列化为对象

 
阅读更多
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#对象序列化反序列化保存与读取和对象直接保存与读取

    序列化是将对象转换为可存储或传输的形式,如字节流或文本,而反序列化则是将这些形式恢复为原始对象。C#中的`System.Runtime.Serialization`命名空间提供了多种序列化工具,如`DataContractSerializer`、`...

    java序列化和反序列化的方法

    * 序列化时,需要使用 ObjectOutputStream 将对象序列化为字节流。 * 反序列化时,需要使用 ObjectInputStream 将字节流反序列化回对象。 * 序列化和反序列化过程中,需要注意版本号问题,否则可能会导致反序列化...

    java 对象的序列化与反序列化

    Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...

    Java对象序列化标准最新版

    Java 对象序列化是一种将Java对象的状态转换成字节流的过程,以便于在网络上传输或存储到磁盘上。Java序列化标准定义了一套规则来描述如何将Java对象转换为可以被序列化的形式。 **1.2 写入对象流** 当一个对象被...

    java对象序列化和反序列化

    1. **定义**: Java对象序列化是将Java对象转换为字节流的过程,以便可以存储在磁盘上或在网络上传输。它允许我们将对象的状态保存下来,即使程序关闭,下次启动时也能恢复到之前的状态。 2. **接口**: 实现序列化的...

    对象流(序列化)

    - 网络传输:在网络应用中,可以将对象序列化为字节流,然后通过网络发送,接收端再进行反序列化。 - RMI(远程方法调用):序列化是RMI实现的基础,因为需要将对象从一个JVM传递到另一个JVM。 8. **序列化安全...

    介绍Java对象序列化使用基础

    序列化的过程就是对象写入字节流和从字节流中读取对象。将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其保存到文件中,管道到另一线程中或通过网络连接将对象数据发送到另一主机。对象序列化功能...

    JAVA对象的序列化与反序列化详细PPT课件.pptx

    当两个Java进程需要通过网络通信时,由于网络只支持二进制数据的传输,因此需要将Java对象转换为字节流,然后在接收方再将字节流还原为原来的对象,这个过程就是反序列化。 Java提供了一套标准的序列化API,包括`...

    关于 Java 对象序列化您不知道的 5 件事

    序列化涉及将对象转换为字节流,而克隆是直接创建一个与原对象具有相同属性的新对象,通常通过实现`Cloneable`接口并覆盖`clone()`方法来实现。 9. **序列化框架** 除了Java内置的序列化机制,还有许多第三方框架...

    字节流,字符流,对象流,序列化,持久化

    在Java编程语言中,字节流、字符流、对象流和序列化是处理数据传输和存储的核心概念。这些概念在程序设计中起着至关重要的作用,尤其是在进行输入输出操作时。下面将对这些主题进行详细解释。 1. 字节流(Byte ...

    java 对象序列化

    Java对象序列化是一种将Java对象转换为字节流的过程,以便可以存储在磁盘上、在网络上传输或在任何其他需要持久化数据的场景中使用。这个过程涉及到两个主要概念:序列化(Marshalling)和反序列化(Unmarshalling)...

    java对象序列化.ppt

    Java对象序列化是一种将对象转换为字节流的过程,以便可以将其存储在磁盘上,或者在网络中进行传输。这是Java平台提供的一种功能,允许程序员将任何Java对象持久化,即将其状态保存到磁盘,或者在网络中进行传输。...

    java对象序列化 传输 保存

    Java对象序列化是一种将Java对象转换为字节流的过程,以便可以存储这些对象或通过网络进行传输。这个过程是Java平台的核心特性,它允许开发者将复杂的对象结构持久化或者在网络间进行安全通信。序列化不仅可以用于...

    Java对象的序列化和反序列化实践

    1. **概念**:反序列化是将已序列化的字节流恢复为原来的Java对象的过程。 2. **过程**:通过`ObjectInputStream`的`readObject()`方法,可以将字节流还原为与原始对象等效的新对象。 3. **安全问题**:反序列化过程...

    对象的序列化和反序列化

    序列化是将一个对象转换为字节流的过程,而反序列化则是将字节流还原为原来的对象。这两个过程在许多场景下都非常有用,比如在网络传输、存储到磁盘或数据库、以及实现跨进程通信时。 首先,我们需要了解`...

    Java对象序列化的秘密

    Java对象序列化是Java平台提供的一种机制,允许将对象的状态转换为字节流,以便存储在磁盘上、通过网络传输或在不同时间点恢复。这个过程涉及到将一个复杂的Java对象模型转换为简单的二进制表示,使得数据可以在不同...

    JAVA对象序列化保存为XML文件的工具类

    在Java编程中,对象序列化是一种将对象的状态转换为字节流的过程,以便可以存储或在网络上传输。而在反序列化时,这个字节流又可以恢复为原来的对象。Java提供了一个方便的机制来实现这一点,即`java.io....

    C#对象三种形式的序列化和反序列化

    在描述中提到,`Student`对象包含了图片,这种情况下二进制序列化可以高效地处理图像数据,因为它是原始字节流。 2. **SOAP序列化(SOAP Serialization)** SOAP序列化将对象转换为符合SOAP标准的XML消息,适合于...

    对象序列化TCP传输

    2. **序列化对象**:使用语言提供的序列化库(如Java的`ObjectOutputStream`,C#的`BinaryFormatter`)将对象转换为字节流。 3. **建立TCP连接**:使用Socket编程创建一个TCP连接,通常包括服务器端的监听和客户端...

Global site tag (gtag.js) - Google Analytics