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的序列化 为什么实现了 ...
随机推荐
- POI操作EXCEL之导出Excel(设置有效性,下拉列表引用)
本人使用的是poi-bin-3.10-FINAL-20140208.zip 版本的poi以下是程序关键代码: //需要引用的类 import java.io.File; import java.io. ...
- Dynamics CRM 警惕Odata查询的陷阱
Dynamics CRM可以很方便的通过用Odata通过AJAX查询到数据.查询分为两种:精确查找和模糊查找. 精确查找是指通过GUID匹配得到一条数据,如: http://CRMURL/org/XR ...
- 类图class的依赖关系
类图class的依赖关系 相关文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) ...
- NuGet安装及简单使用
通过Visual Studio安装NuGet 直接下载并安装NuGet 一.通过Visual Studio安装NuGet 打开Visual Studio扩展管理器 2.选择联机库,并在搜索中写入NuG ...
- Best Cow Line(POJ No.3617)
问题: 链接:http://poj.org/problem?id=3617 思路: 按照字典序比较S和将S反转后的字符串S' 如果S较小,就从S的开头取出一个字符,加到T的末尾(更新下标值) 如果S’ ...
- Silverlight类百度文库在线文档阅读器(转)
百度文库阅读器是基于Flash的,用Silverlight其实也可以做. 我实现的在线阅读器可以应用于内网文档发布,在线阅览审批等.没有过多的堆积功能,专注于核心功能.主要有以下特性: 1. 基于XP ...
- ios学习笔记之UIControl解读
UIControl,相信大家对其并不陌生吧,比如平常最常用的UIButton就是继承自UIControl的.按照惯例,还是先来看看为什么有UIControl这个类?什么时候用到它? 查下文档就可以看到 ...
- Cracking the Coding Interview(Stacks and Queues)
Cracking the Coding Interview(Stacks and Queues) 1.Describe how you could use a single array to impl ...
- BST&AVL&红黑树简单介绍
(BST&AVL&红黑树简单介绍) 前言: 节主要是给出BST,AVL和红黑树的C++代码,方便自己以后的查阅,其代码依旧是data structures and algorithm ...
- CentOS-6.5x64:VNC安装配置
1.安装软件前首先检查下系统是否已经安装了这个软件: rpm -qa tigervnc-server 2.根据前面命令的查询,显示系统还是没有安装VNC服务器端软件,那么我们就使用命令进行安装一下: ...