首先解释两个概念,何为序列化?何为反序列化?
序列化:将对象转化成流的过程称为序列化
反序列化:将流转化成对象的过程称之为反序列化
序列化与反序列化必须遵守的原则
a) Java对象
在java中要想使一个java对象可以实现序列化与反序列化,必须让该类实现java.io.Serializable接口
java.io.Serializable接口定义如下:
publicinterface Serializable {
}
从上述定义中可以看到该接口中未定义任何方法,这大大的简化了开发者
b) 序列化主要依赖java.io.ObjectOutputStream类,该类对java.io.FileOutputStream进一步做了封装,这里主要使用ObjectOutputStream类的writeObject()方法实现序列化功能
Demo:
/**
*将对象序列化到磁盘文件中
*@paramo
*@throwsException
*/
publicstaticvoid writeObject(Object o) throws Exception{
File f=new File("d:""user.tmp");
if(f.exists()){
f.delete();
}
FileOutputStream os=new FileOutputStream(f);
//ObjectOutputStream 核心类
ObjectOutputStream oos=new ObjectOutputStream(os);
oos.writeObject(o);
oos.close();
os.close();
}
c) 反序列化主要依赖java.io.ObjectInputStream类,该类对java.io.InputStream进一步做了封装,这里主要使用ObjectInputStream类的readObject()方法实现序列化功能
Demo:
/**
*反序列化,将磁盘文件转化为对象
*@paramf
*@return
*@throwsException
*/
publicstatic User readObject(File f) throws Exception{
InputStream is=new FileInputStream(f);
//ObjectOutputStream 核心类
ObjectInputStream ois=new ObjectInputStream(is);
return (User)ois.readObject();
}
贴出完整的demo
Java对象:
package com.io.bean;
import java.io.Serializable;
publicclass User implements Serializable {
privateintuserId;
private String userName;
private String userSex;
privateintuserAge;
publicint getUserAge() {
returnuserAge;
}
publicvoid setUserAge(int userAge) {
this.userAge = userAge;
}
publicint getUserId() {
returnuserId;
}
publicvoid setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
returnuserName;
}
publicvoid setUserName(String userName) {
this.userName = userName;
}
public String getUserSex() {
returnuserSex;
}
publicvoid setUserSex(String userSex) {
this.userSex = userSex;
}
@Override
public String toString() {
returnthis.getUserId() + " " + this.getUserName() + " "
+ this.getUserSex() + " " + this.getUserAge();
}
}
序列化与反序列化
package com.io.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import com.io.bean.User;
publicclass TestSerializable {
/**
*将对象序列化到磁盘文件中
*@paramo
*@throwsException
*/
publicstaticvoid writeObject(Object o) throws Exception{
File f=new File("d:""user.tmp");
if(f.exists()){
f.delete();
}
FileOutputStream os=new FileOutputStream(f);
//ObjectOutputStream 核心类
ObjectOutputStream oos=new ObjectOutputStream(os);
oos.writeObject(o);
oos.close();
os.close();
}
/**
*反序列化,将磁盘文件转化为对象
*@paramf
*@return
*@throwsException
*/
publicstatic User readObject(File f) throws Exception{
InputStream is=new FileInputStream(f);
//ObjectOutputStream 核心类
ObjectInputStream ois=new ObjectInputStream(is);
return (User)ois.readObject();
}
publicstaticvoid main(String[] args) throws Exception{
/*****************将对象序列化***************/
/*
User user=new User();
user.setUserId(1);
user.setUserName("张艺谋");
user.setUserSex("男");
user.setUserAge(50);
TestSerializable.writeObject(user);
*/
/*****************将对象序反列化***************/
User user=TestSerializable.readObject(new File("d:""user.tmp"));
System.out.println(user);
}
}
分享到:
相关推荐
java序列化与反序列化
### Java序列化与反序列化的深入解析 #### Java序列化的重要性及应用场景 Java序列化是一项核心功能,它允许程序员将对象的状态转化为字节流的形式,从而实现对象的持久化存储或者在网络之间进行传递。这对于诸如...
Java序列化与反序列化是Java编程中一个重要的概念,它允许我们将对象的状态转换为字节流,以便存储或在网络中传输。这个过程被称为序列化,而将字节流恢复为对象的过程则称为反序列化。Java提供了一个内置的机制来...
《Java 序列化与反序列化:基础与应用》
### Java序列化与反序列化详解 #### 一、Java序列化概述 Java序列化(Serialization)是一项重要的功能,它可以将对象的状态转化为一系列字节,从而实现对象的持久化存储或在网络上传输。序列化机制使得Java对象...
java 序列化和反序列化的方法 Java 序列化和反序列化是 Java 语言中的一种机制,用于将对象转换为字节流,以便在网络上传输或存储。序列化是将对象转换为字节流的过程,而反序列化是将字节流转换回对象的过程。 在...
Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...
### Java序列化与反序列化的深入解析 #### 序列化的功能与意义 序列化是Java编程语言中的一项核心功能,其主要目的是将对象的状态转换为可以存储或传输的格式,便于持久化保存或网络传输。序列化并不涉及对象的...
java 序列化与反序列化的实例详解 Java 序列化与反序列化是 Java 编程语言中的一种机制,允许将 Java 对象转换为字节序列,并将其反序列化回 Java 对象。序列化是指将 Java 对象转换为字节序列的过程,而反序列化是...
Java的序列化与反序列化是Java开发中的一项重要技术,它允许我们将对象的状态转换为字节流,以便存储或在网络上传输。`Serializable`接口是Java提供的一个标记接口,用于实现对象的序列化。当一个类实现了这个接口,...
### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化的概念 序列化是指将程序中的对象转换为一系列字节流的过程,主要用于保存对象的状态或在网络之间传输对象。序列化的主要目的是为了能够持久化...
Java反序列化是一种将已序列化的对象状态转换回对象的过程,它是Java平台中持久化数据的一种常见方式。在Java应用程序中,序列化用于保存对象的状态以便稍后恢复,或者在网络间传输对象。然而,这个过程也可能引入...
Xson是一个Java对象序列化和反序列化程序。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。 Maven: <groupId>com.github.xsonorg</groupId> <artifactId>xson-core <version>1.0.1 ...
本篇文章将深入探讨C#和Java中的序列化与反序列化机制。 首先,我们要了解什么是序列化。序列化是指将对象的状态转化为可存储或可传输的数据格式的过程。这个过程通常将内存中的对象转换成字节流,以便保存到磁盘、...
Java中的JSON(JavaScript Object Notation)序列化与反序列化是开发过程中常见且重要的操作,主要用于数据交换和存储。JSON是一种轻量级的数据交换格式,它允许我们将Java对象转换为JSON字符串,反之亦然,方便在...
Java 序列化与反序列化(Serialization)知识点总结 Java 序列化与反序列化是 Java 语言中的一种机制,用于将对象的状态信息转化为可以存储或者传输的形式的过程。序列化(Serialization)是将对象的状态信息转化为...