`
namezhou
  • 浏览: 158649 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java IO 中对象的序列化操作

阅读更多

Java IO 中对象的序列化操作

这是一个在IO中比较基础的问题,但是因为很少用到,很容易遗忘,面试的时候可能会遇到,所以记录到博客上,防止忘记

 

其实代码很简单:主要是用到两个类ObjectInputStream 和ObjectOutputStream 分别实现对类的读取和写入

 

注意的一点是:要序列化的类应该实现Serialiable接口,其实是一个空的接口,包含写入和读取的测试程序代码

 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.UUID;


public class TestSerialized {
	/**
	 * 把对象写入文件
	 * @throws Exception
	 */
	public static void WriteObject(Object obj)throws Exception{
		FileOutputStream fis = new FileOutputStream(new File("c:\\object.obj"));
		ObjectOutputStream oos = new ObjectOutputStream(fis);
		oos.writeObject(obj);
		oos.close();
	}
	/**
	 * 从文件读取对象
	 * @return
	 * @throws Exception
	 */
	public static Object readObject() throws Exception {
		FileInputStream fis = new FileInputStream(new File("c:\\object.obj"));
		ObjectInputStream oos = new ObjectInputStream(fis);
		return oos.readObject();
	}
	public static void testWrite() throws Exception{
		SerializedClass sc = new SerializedClass();
		sc.setId(UUID.randomUUID().toString());
		sc.setName("zhougege");
		WriteObject(sc);
		System.out.println("写入的对象:");
		System.out.println(sc.getId());
		System.out.println(sc.getName());
	}
	public static void testRead() throws Exception{
		Object obj = readObject();
		SerializedClass sc = (SerializedClass)obj;
		System.out.println("读取到的对象:");
		System.out.println(sc.getId());
		System.out.println(sc.getName());
	}
	public static void main(String[] args) throws Exception {
		testWrite();
		testRead();
	}
}

 写入对象的核心代码

	/**
	 * 把对象写入文件
	 * @throws Exception
	 */
	public static void WriteObject(Object obj)throws Exception{
		FileOutputStream fis = new FileOutputStream(new File("c:\\object.obj"));
		ObjectOutputStream oos = new ObjectOutputStream(fis);
		oos.writeObject(obj);
		oos.close();
	}

 

读取对象的核心代码

	/**
	 * 从文件读取对象
	 * @return
	 * @throws Exception
	 */
	public static Object readObject() throws Exception {
		FileInputStream fis = new FileInputStream(new File("c:\\object.obj"));
		ObjectInputStream oos = new ObjectInputStream(fis);
		return oos.readObject();
	}

 

3
2
分享到:
评论
1 楼 greatwqs 2011-06-12  
序列化算法这篇不错 : http://greatwqs.iteye.com/blog/1076086

相关推荐

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

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

    java对象序列化和反序列化

    Java对象序列化与反序列化是Java编程中重要的概念,主要应用于数据持久化、网络传输以及存储等场景。本文将详细解析这两个概念及其在实际应用中的实现方式。 **一、Java对象序列化** 1. **定义**: Java对象序列化...

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

    在本文中,我们将深入探讨关于Java对象序列化你可能不知道的五件事情,这些知识点对于理解和优化你的Java应用程序至关重要。 1. **序列化的意义与用途** Java对象序列化不仅用于持久化对象状态,还能在网络传输中...

    java对象序列化.ppt

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

    java.io.Serializable序列化问题

    #### 六、序列化中的注意事项 - **`transient` 关键字**:使用 `transient` 可以排除某些字段不被序列化。 - **版本兼容性**:序列化的类应该定义一个 `serialVersionUID` 来确保版本兼容性。 - **私有构造函数**:...

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

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

    C#和Java的序列化反序列化

    而在Java中,我们可以通过实现`Serializable`接口来使类支持序列化,或者使用`java.io.ObjectOutputStream`和`java.io.ObjectInputStream`进行对象的序列化和反序列化。 接下来,我们讨论反序列化。反序列化是序列...

    通过socket传递java对象(对象序列化)

    本篇将深入探讨如何通过Socket传递Java对象,重点讲解对象序列化的过程。 首先,让我们理解什么是Socket。Socket在计算机网络中是一种进程间通信机制,它允许两个网络应用程序之间建立连接并交换数据。在Java中,`...

    java对象序列化 传输 保存

    1. **对象序列化的基本用法**:如何在类中声明`Serializable`接口,以及如何使用`ObjectOutputStream`和`ObjectInputStream`进行序列化和反序列化操作。 2. **序列化与持久化**:讨论了如何通过序列化将对象的状态...

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

    前者代表对象输出流,具备`writeObject(Object obj)`方法,可以将对象序列化并写入到目标输出流;后者代表对象输入流,其`readObject()`方法能从输入流中读取字节流并反序列化为对象。 为了使一个Java对象能够被...

    java中对象的序列化

    Java中的对象序列化是一种将Java对象转换为字节流的过程,以便可以持久存储或在网络上传输。这在处理跨进程通信、远程方法调用(RMI)、数据存储以及需要对象状态持久化的场景中非常有用。要实现Java对象的序列化,...

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

    序列化的过程就是对象写入字节流和从字节流中读取对象。将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其...对象序列化问题在网络编程中并不是最激动人心的课题,但却相当重要,具有许多实用意义。

    Java对象序列化的秘密

    在Java中,实现对象序列化主要依靠实现`java.io.Serializable`接口。本文将深入探讨Java对象序列化的原理、用途和注意事项。 **一、序列化原理** 1. **实现Serializable接口**: 对象要能够被序列化,它所在的类...

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

    在Java编程语言中,对象的序列化和反序列化是两个关键的概念,它们对于数据存储、网络传输以及持久化有着重要的作用。这篇文章将深入探讨这两个主题,并通过实践例子来阐述其工作原理。 **序列化(Serialization)*...

    IO流与序列化

    通过学习IO流与序列化,开发者能够更好地理解Java中数据的读写和对象状态的保存,这对于开发涉及文件操作、网络通信和持久化存储的程序至关重要。同时,熟悉这些技术也有助于提升代码的可维护性和性能。

    Java序列化_Java序列化结构_

    Java中的序列化主要通过实现`java.io.Serializable`接口来完成。虽然这个接口没有任何方法,但是它的存在就表明该类的对象可以被序列化。当一个对象被序列化时,其所有字段(包括私有的)都会被包含在字节流中,除非...

    Android-Android上的Java对象反序列化

    一、Java对象序列化与反序列化 1. **序列化**: 序列化是将Java对象转换为字节流的过程,以便于存储或传输。通过实现`java.io.Serializable`接口,一个Java对象可以获得序列化的能力。序列化不仅可以保存对象的状态...

    java中的序列化与反序列化

    Java中的序列化与反序列化是Java编程语言中用于处理对象状态持久化和网络传输的重要技术。序列化是指将一个Java对象转换为字节流的过程,这样就可以将对象的状态保存到磁盘上或者通过网络传输。反序列化则是将字节流...

Global site tag (gtag.js) - Google Analytics