`
namezhou
  • 浏览: 154563 次
  • 性别: 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.io包中的各种字节流类将其...对象序列化问题在网络编程中并不是最激动人心的课题,但却相当重要,具有许多实用意义。

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

     把Java对象转换为字节序列的过程称为对象的序列化。  把字节序列恢复为Java对象的过程称为对象的反序列化。  对象的序列化主要有两种用途:  1)把对象的字节序列地保存到硬盘上,通常存放在一个文件中...

    Java IO流对象的序列化和反序列化实例详解

    主要介绍了Java IO流对象的序列化和反序列化实例详解的相关资料,需要的朋友可以参考下

    java IO数据操作流、对象序列化、压缩流代码解析

    主要介绍了java IO数据操作流、对象序列化、压缩流代码解析,具有一定借鉴价值,需要的朋友可以参考下

    java小项目练习IO实现

    IO实现本地序列化和反序列化,面向对象,集合等

    java-Hadoop序列化

     Java序列化(java.io.Serializable)  Hadoop序列化的特点  Hadoop的序列化格式:Writable  序列化格式特点:  紧凑:高效使用存储空间。  快速:读写数据的额外开销小  可扩展:可透明地读取老格式...

    深入分析Java的序列化与反序列化

     为什么实现了java.io.Serializable接口才能被序列化  transient的作用是什么  怎么自定义序列化策略  自定义的序列化策略是如何被调用的  ArrayList对序列化的实现有什么好处  Java对象的序列化  ...

    Java SE编程入门教程 java序列化(共14页).pptx

    Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...

    Java高级程序设计实战教程第五章-Java序列化机制.pptx

    对象序列化是Java编程中的必备武器 Java高级程序设计实战教程第五章-Java序列化机制全文共15页,当前为第4页。 5.2.2 序列化应用 当你想把内存中的对象状态保存到一个文件中或者数据库中时候; 当你想用套接字在...

    java中的IO操作总结(四)

    java中的IO操作总结(四) 前面已经把java io的主要操作讲完了 这一节我们来说说关于java io的其他内容 Serializable序列化 实例1:对象的序列化 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23...

    Java工程师必备面试题【多线程、反射、类加载器、JVM、泛型、异常处理、注解、面向对象编程、集合、IO流、序列化】

    内容概要:以上列出的Java面试题涵盖了Java语言的基础知识、面向对象编程、集合、IO流、多线程、反射、类加载器、JVM、序列化、泛型、异常处理、注解等多个方面。 适用人群:以上Java面试题适用于准备Java开发...

    java序列化和反序列化,面试必备

    意义:序列化机制允许将实现序列化的Java对象转换为字节序列,并将字节序列保存在磁盘中,或通过网络传输,以达到以后恢复成原来的对象。序列化机制使地对象可以脱离程序的运行而独立存在。 使用场景:所有在网络上...

    Java序列化与反序列化三种格式存取

     Java中的序列化(serialization)机制能够将一个实例对象的状态信息写入到一个字节流中,使其可以通过socket进行传输、或者持久化存储到数据库或文件系统中;然后在需要的时候,可以根据字节流中的信息来重构一个...

    10.尚硅谷_java基础_IO

    IO 概述 File 类 IO 流分类 InputStream & Reader OutputStream & Writer RandomAccessFile 类 对象的序列化

    Java SE编程入门教程 java IO(共28页).pptx

    Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...

    java-io-guide:Java中的Java IO(输入和输出流)指南

    文件序列化示例 如何用Java将对象写入文件 如何从文件读取对象 文件压缩示例 用Java压缩ZIP格式的文件 从Java中的ZIP文件解压缩文件 目录 目录操作示例列表。 获取当前工作目录 建立目录 删除目录 复制目录 遍历...

    Java的IO流讲解代码: File 类、RandomAccessFile 类、字节流(文件字节流、缓冲字节流、基本数据类型

    File 类、RandomAccessFile 类、字节流(文件字节流、缓冲字节流、基本数据类型字节流、打印流、对象序列化流、字节数组流)、字符流(缓冲字符流、文件字符流、转换流、格式化输出流、字符数组流) 这份代码源码...

    流程控制 网络编程 对象序列化

    java 网络编程 流程控制 线程

    Android 通过Intent使用Bundle传递对象详细介绍

    被传递的对象需要先实现序列化,而序列化对象有两种方式:java.io.Serializable和android.os.Parcelable Java中使用的是Serializable,而谷歌在Android使用了自定义的Parcelable。 两种序列化方式的区别: 1.在...

    JAVA_API1.6文档(中文)

    java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...

Global site tag (gtag.js) - Google Analytics