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

java序列化反序列化

 
阅读更多

首先解释两个概念,何为序列化?何为反序列化?

序列化:将对象转化成流的过程称为序列化

反序列化:将流转化成对象的过程称之为反序列化

序列化与反序列化必须遵守的原则

a)Java对象

在java中要想使一个java对象可以实现序列化与反序列化,必须让该类实现java.io.Serializable接口

java.io.Serializable接口定义如下:

publicinterfaceSerializable {

}

从上述定义中可以看到该接口中未定义任何方法,这大大的简化了开发者

b)序列化主要依赖java.io.ObjectOutputStream类,该类对java.io.FileOutputStream进一步做了封装,这里主要使用ObjectOutputStream类的writeObject()方法实现序列化功能

Demo:

/**

*将对象序列化到磁盘文件中

*@paramo

*@throwsException

*/

publicstaticvoidwriteObject(Object o)throwsException{

File f=newFile("d:""user.tmp");

if(f.exists()){

f.delete();

}

FileOutputStream os=newFileOutputStream(f);

//ObjectOutputStream核心类

ObjectOutputStream oos=newObjectOutputStream(os);

oos.writeObject(o);

oos.close();

os.close();

}

c)反序列化主要依赖java.io.ObjectInputStream类,该类对java.io.InputStream进一步做了封装,这里主要使用ObjectInputStream类的readObject()方法实现序列化功能

Demo:

/**

*反序列化,将磁盘文件转化为对象

*@paramf

*@return

*@throwsException

*/

publicstaticUser readObject(File f)throwsException{

InputStream is=newFileInputStream(f);

//ObjectOutputStream核心类

ObjectInputStream ois=newObjectInputStream(is);

return(User)ois.readObject();

}

贴出完整的demo

Java对象:

packagecom.io.bean;

importjava.io.Serializable;

publicclassUserimplementsSerializable{

privateintuserId;

privateStringuserName;

privateStringuserSex;

privateintuserAge;

publicintgetUserAge() {

returnuserAge;

}

publicvoidsetUserAge(intuserAge) {

this.userAge= userAge;

}

publicintgetUserId() {

returnuserId;

}

publicvoidsetUserId(intuserId) {

this.userId= userId;

}

publicString getUserName() {

returnuserName;

}

publicvoidsetUserName(String userName) {

this.userName= userName;

}

publicString getUserSex() {

returnuserSex;

}

publicvoidsetUserSex(String userSex) {

this.userSex= userSex;

}

@Override

publicString toString() {

returnthis.getUserId() +" "+this.getUserName() +" "

+this.getUserSex() +" "+this.getUserAge();

}

}

序列化与反序列化

packagecom.io.test;

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileOutputStream;

importjava.io.InputStream;

importjava.io.ObjectInputStream;

importjava.io.ObjectOutputStream;

importcom.io.bean.User;

publicclassTestSerializable {

/**

*将对象序列化到磁盘文件中

*@paramo

*@throwsException

*/

publicstaticvoidwriteObject(Object o)throwsException{

File f=newFile("d:""user.tmp");

if(f.exists()){

f.delete();

}

FileOutputStream os=newFileOutputStream(f);

//ObjectOutputStream核心类

ObjectOutputStream oos=newObjectOutputStream(os);

oos.writeObject(o);

oos.close();

os.close();

}

/**

*反序列化,将磁盘文件转化为对象

*@paramf

*@return

*@throwsException

*/

publicstaticUser readObject(File f)throwsException{

InputStream is=newFileInputStream(f);

//ObjectOutputStream核心类

ObjectInputStream ois=newObjectInputStream(is);

return(User)ois.readObject();

}

publicstaticvoidmain(String[] args)throwsException{

/*****************将对象序列化***************/

/*

User user=new User();

user.setUserId(1);

user.setUserName("张艺谋");

user.setUserSex("");

user.setUserAge(50);

TestSerializable.writeObject(user);

*/

/*****************将对象序反列化***************/

User user=TestSerializable.readObject(newFile("d:""user.tmp"));

System.out.println(user);

}

}

分享到:
评论

相关推荐

    jackson库实现定制化的java序列化反序列化操作

    标题中的“jackson库实现定制化的java序列化反序列化操作”指的是利用Jackson库的能力,通过自定义规则来控制对象的序列化和反序列化过程。这通常涉及到创建自定义的`JsonSerializer`和`JsonDeserializer`,或者使用...

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

    java 序列化和反序列化的方法 Java 序列化和反序列化是 Java 语言中的一种机制,用于将对象转换为字节流,以便在网络上传输或存储。序列化是将对象转换为字节流的过程,而反序列化是将字节流转换回对象的过程。 在...

    java反序列化工具

    Java反序列化是一种将已序列化的对象状态转换回对象的过程,它是Java平台中持久化数据的一种常见方式。在Java应用程序中,序列化用于保存对象的状态以便稍后恢复,或者在网络间传输对象。然而,这个过程也可能引入...

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

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

    一个Java序列化反序列化库,用于将Java对象转换为JSON和返回JSON.zip

    Java序列化和反序列化是Java开发中常见且重要的概念,它们主要用于对象的状态持久化以及在不同系统间传递数据。本库专注于将Java对象转换为JSON格式,这在Web服务、API开发、数据存储和传输等方面都有广泛的应用。...

    java序列化(Serializable)的作用和反序列化.doc

    ### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化的概念 序列化是指将程序中的对象转换为一系列字节流的过程,主要用于保存对象的状态或在网络之间传输对象。序列化的主要目的是为了能够持久化...

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

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

    Java对象序列化和反序列化工具Xson.zip

    Xson是一个Java对象序列化和反序列化程序。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。 Maven:  <groupId>com.github.xsonorg</groupId>  <artifactId>xson-core  <version>1.0.1 ...

    java序列化和反序列化

    ### Java序列化与反序列化详解 #### 一、Java序列化概述 Java序列化(Serialization)是一项重要的功能,它可以将对象的状态转化为一系列字节,从而实现对象的持久化存储或在网络上传输。序列化机制使得Java对象...

    Java序列化_Java序列化结构_

    Java序列化是Java平台中的一种持久化机制,它允许对象的状态被转换成字节流,以便存储、网络传输或在不同时间点恢复。这个过程被称为序列化,而反向操作称为反序列化。序列化在许多场景下都非常有用,比如在分布式...

    java序列化(Serializable)的作用和反序列化

    ### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化是什么? 序列化是指将程序中的对象转换为字节流的过程,从而方便存储或传输这些对象。通常,序列化用于将对象的状态(即其实例变量的值,而非...

    java serializable 序列化与反序列化

    **一、Java序列化** 1. **什么是序列化**:序列化是将对象的状态(属性和成员变量)转换为可以存储或传输的数据格式的过程。在Java中,通常是将对象转换为字节数组,以便写入磁盘或通过网络发送。 2. **为什么需要...

    Java序列化与反序列化

    Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化

    Java序列化

    Java序列化是Java平台中的一种标准机制,允许将对象的状态转换为字节流,以便存储在磁盘上、通过网络进行传输或者在某些时候恢复原来的对象状态。这一过程包括两个主要步骤:对象的序列化(将对象转换为字节流)和反...

    Protocol Buffer序列化对比Java序列化.

    - Java序列化:Java序列化虽然方便,但生成的数据量较大,且序列化和反序列化速度相对较慢。 2. 数据结构: - Protocol Buffer:PB允许定义自己的数据结构(消息类型),通过.proto文件进行描述,支持基本数据...

    Java序列化反序列化原理及漏洞解决方案

    Java序列化反序列化原理及漏洞解决方案 Java序列化反序列化原理及漏洞解决方案是Java编程语言中的一项重要机制,该机制允许将Java对象转换为字节序列,以便在网络上传输或存储在文件中。同时,Java也提供了反序列化...

    java对象序列化和反序列化

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

    java 序列化时排除指定属性

    Java序列化是Java平台提供的一种持久化机制,它允许我们将一个Java对象转换为字节流,以便存储到磁盘上,或者通过网络进行传输。这使得我们可以保存和恢复对象的状态。实现序列化的类需要实现`Serializable`接口,...

    java序列化全解

    Java序列化是Java平台中的一种核心机制,它允许对象的状态被转换成字节流,以便存储到磁盘、数据库,或者在网络中进行传输。这对于实现持久化、远程方法调用(RMI)以及Enterprise JavaBeans(EJB)等高级功能至关...

Global site tag (gtag.js) - Google Analytics