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的序列化 为什么实现了 ...
随机推荐
- AngularJS Change Path Without Reloading
To change path URL with AngularJS, $location.path() is passed the new URL as a parameter, and the pa ...
- Forget Java to learn Javascript from 0.--Preface
I'm going to start to learn Javascript in this month. Someone told me you can't learn another langua ...
- ftp服务器的搭建
/etc/vsftpd.conf :ftp的配置文件 anonymous_enable=YES:是否支持匿名登录 local_enable=YES:是否支持本地登录 /etc/ftpusers:ftp ...
- Effective C++(19) 设计class犹如设计type
问题聚焦: 这一节不涉及代码,但是我们需要明确的一点是,思想比代码要重要得多. 设计优秀的classes是一项艰巨的工作,就像设计好的types一样. 我们应该带着和“语言设计 ...
- 2014.3.5-C语言学习小结
知识点: 1.结构体 struct 2.联合体 union 3.枚举 4.结构.联合与函数 =========================== 结构体 思考:如果现在希望保存一个学生的信息,该如何 ...
- Google Adsense(Google网站联盟)广告申请指南
Google AdSense 是一种获取收入的快速简便的方法,适合于各种规模的网站发布商.它可以在网站的内容网页上展示相关性较高的 Google 广告,并且这些广告不会过分夸张醒目.由于所展示的广告同 ...
- IceMx.Mvc 我的js MVC 框架七、完善植物大战僵尸(增加阳光的消费和获得)
话不多说,先上图 这次增加了阳光的消费和获得,增加了阳光的点击动画 重新排布了布局 有兴趣的话就研究下吧. 上一篇有朋友说让我把项目放到github上面维护,本人没用过这个,肯请朋友们帮小弟科普一下放 ...
- 跨平台C/C++集成开发环境-Code::Blocks-内置GCC
Code::Blocks 是一个开放源码的全功能的跨平台C/C++集成开发环境. 相比于基于Delphi的Dev-C++共享C++IDE,Code::Blocks是开放源码软件.Code::Block ...
- DIV+CSS命名参考
用了一段CSS布局设计网页,发现自己的命名有点混乱,完全按照自己的想法命名,虽然没什么影响,有不给别人看源文件,但是工作室有时候和团队合作完成项目的时候,就遇到麻烦了,要修改一个地方相当的费事.所以还 ...
- Visual Studio 2012的开发使用技巧
分享10条Visual Studio 2012的开发使用技巧 使用Visual Studio 2012有一段时间了,并不是追赶潮流,而是被逼迫无可奈何.客户要求的ASP.NET MVC 4的项目,要用 ...