java 的序列化
(1) 首先是java自己内部实现的对象序列化机制 其实就是ObjectInputStream 和 ObjectOutputStream
首先实现一个实体对象 记住必须实现Serializable 接口
package com.rpc;
import java.io.Serializable;
public class Student implements Serializable{
private static final long serialVersionUID = 5915058853403173212L;
private String id;
private String name;
private String sex;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
然后是将对象以文件的形式保存
package com.rpc; import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream; public class ObjectChuanshu { public static void main(String[] args) {
Student student = new Student();
student.setAge(23);
student.setId("123");
student.setName("张三");
student.setSex("男"); FileOutputStream fout = null;
ObjectOutputStream oos = null;
try{
fout = new FileOutputStream(new File("d:/1.object"));
oos = new ObjectOutputStream(fout);
oos.writeObject(student);
oos.flush();
fout.flush();
}catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}finally{
try{
oos.close();
fout.close();
}catch(Exception e){} }
}
}
然后是从文件中读出对象
package com.rpc; import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream; public class ReadObject { public static void main(String[] args) { FileInputStream fin = null;
ObjectInputStream ois = null; try{
fin = new FileInputStream(new File("d:/1.object"));
ois = new ObjectInputStream(fin);
Student student = (Student)ois.readObject();
System.out.println(student.getName());
}catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}finally{
try{
fin.close();
ois.close();
}catch(Exception e){}
} }
}
输出结果
张三
Hessian 的对象 序列化 需要添加 hessian.jar
package com.rpc; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import com.caucho.hessian.io.Hessian2Input;
import com.caucho.hessian.io.Hessian2Output; public class HessianObject { private String filePath; public HessianObject(String filePath){
this.filePath = filePath;
}
/**
* 将对象保存到指定的文件中
* @param filePath
* @throws Exception
*/
public byte[] writeObject(Student student) throws Exception{ Hessian2Output hout = null;
ByteArrayOutputStream baos = null;
try{
baos = new ByteArrayOutputStream();
hout = new Hessian2Output(baos);
hout.writeObject(student);
hout.flush();
}catch(Exception e){
throw e;
}finally{
}
return baos.toByteArray();
} /**
* 读取文件中的对象
* @param filePath
* @throws Exception
*/
public Student readObject(byte[] buffer)throws Exception{ Hessian2Input hin = null;
Student student = null;
ByteArrayInputStream bais = null;
try{
bais = new ByteArrayInputStream(buffer);
hin = new Hessian2Input(bais);
student = (Student)hin.readObject();
}catch(Exception e){
throw e;
}finally{
}
return student;
} public static void main(String[] args) { HessianObject hessianObject = new HessianObject("d:/2.object");
Student student = new Student();
student.setAge(18);
student.setId("12345");
student.setName("李四");
student.setSex("女");
try{
byte[] buffer = hessianObject.writeObject(student);
Student s = hessianObject.readObject(buffer);
System.out.println(s.getName());
}catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
输出结果
李四
java 的序列化的更多相关文章
- Java对象序列化剖析
对象序列化的目的 1)希望将Java对象持久化在文件中 2)将Java对象用于网络传输 实现方式 如果希望一个类的对象可以被序列化/反序列化,那该类必须实现java.io.Serializable接口 ...
- JAVA的序列化和持久化的区别与联系
持久化(Persistence) 即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘).持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中.XML数据文 ...
- 理解Java对象序列化
http://www.blogjava.net/jiangshachina/archive/2012/02/13/369898.html 1. 什么是Java对象序列化 Java平台允许我们在内存中创 ...
- java 对象序列化与反序列化
Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为 ...
- Java的序列化ID的作用
Java的序列化ID的作用 简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的serialVersio ...
- Java基础-序列化
Java序列化是将一个对象编码成一个字节流,反序列化将字节流编码转换成一个对象. 序列化是Java中实现持久化存储的一种方法: 为数据传输提供了线路级对象表示法. Java的序列化机制是通过在运行时判 ...
- java 对象序列化
java 对象序列化 package org.rui.io.serializable; import java.io.ByteArrayInputStream; import java.io.Byte ...
- 理解Java对象序列化(二)
关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结.此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制.在撰写本文时,既参考了Th ...
- 关于 Java 对象序列化您不知道的 5 件事
数年前,当和一个软件团队一起用 Java 语言编写一个应用程序时,我体会到比一般程序员多知道一点关于 Java 对象序列化的知识所带来的好处. 关于本系列 您觉得自己懂 Java 编程?事实上,大多数 ...
- 深入分析Java的序列化与反序列化
序列化是一种对象持久化的手段.普遍应用在网络传输.RMI等场景中.本文通过分析ArrayList的序列化来介绍Java序列化的相关内容.主要涉及到以下几个问题: 怎么实现Java的序列化 为什么实现了 ...
随机推荐
- Ajax提交底层原型XMLHttpRequest
相信接触过ajax的都觉得其post,get提交很方便,那么他是怎么实现的呢?基于此我们就不得不谈到js中的XMLHttpRequest对象. 其中w3c中是这样解释的: XMLHttpRequest ...
- journaling保证意外故障下的数据完整性
mongoDB研究笔记:journaling保证意外故障下的数据完整性 mongoDB的Journaling日志功能与常见的log日志是不一样的,mongoDB也有log日志,它只是简单记录了数据 ...
- selenium webdriver (python)
selenium webdriver (python) 第一版PDF Posted on 2013-08-30 22:59 虫师 阅读(221) 评论(0) 编辑 收藏 前言 如果你是一位有pytho ...
- Java用jdom.jar解析读取XML文件信息
jdom.jar下载地址1:http://www.jdom.org/downloads/ 下载地址2:http://www.java2s.com/Code/Jar/j/Downloadjdomjar. ...
- jQuery焦点图切换特效插件封装
网站焦点图是一种网站内容的展现形式,可简单理解为一张图片或多张图片展现在网页上就是网站焦点图.在网站很明显的位置,用图片组合播放的形式,类似焦点新闻的意思只不过加上了图片.一般多使用在网站首页版面或频 ...
- C#操作Kentico cms 中的 content(winform环境)
前段时间做了个winform程序,去管理kentico网站的content,包括content节点的增删改查,以及相应节点内容的修改.现在将对content的操作方法简单的介绍一下. 我们想要操作ke ...
- C# 代理应用 - Cachable
C# 代理应用 - Cachable 放心,这次不是说设计模式中的代理模式,说的是C#的RealProxy的用法,主要用于:通过给class贴标签,让class做更多的工作,比如判断是否存在缓存,有则 ...
- HC - 05 bluetooth module settings in Linux using CuteCom
By default the bluetooth module HC-05 sets baud rate at 38400, data bits 8, Stop bits 1 All schemati ...
- CentOS-6.5x64:VNC安装配置
1.安装软件前首先检查下系统是否已经安装了这个软件: rpm -qa tigervnc-server 2.根据前面命令的查询,显示系统还是没有安装VNC服务器端软件,那么我们就使用命令进行安装一下: ...
- 40w会议投票系统优化方案
40w会议投票系统优化方案 最近2天谈了一个项目,根据提出的需求是,该系统本来是属于一个大系统的分割出来的一个很小的系统,但是由于是并发关系会耗费资源很大,所以分割出来.据了解,系统采用的mysql+ ...