(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 的序列化的更多相关文章

  1. Java对象序列化剖析

    对象序列化的目的 1)希望将Java对象持久化在文件中 2)将Java对象用于网络传输 实现方式 如果希望一个类的对象可以被序列化/反序列化,那该类必须实现java.io.Serializable接口 ...

  2. JAVA的序列化和持久化的区别与联系

      持久化(Persistence) 即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘).持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中.XML数据文 ...

  3. 理解Java对象序列化

    http://www.blogjava.net/jiangshachina/archive/2012/02/13/369898.html 1. 什么是Java对象序列化 Java平台允许我们在内存中创 ...

  4. java 对象序列化与反序列化

    Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化  Java序列化是指把Java对象转换为 ...

  5. Java的序列化ID的作用

    Java的序列化ID的作用 简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的serialVersio ...

  6. Java基础-序列化

    Java序列化是将一个对象编码成一个字节流,反序列化将字节流编码转换成一个对象. 序列化是Java中实现持久化存储的一种方法: 为数据传输提供了线路级对象表示法. Java的序列化机制是通过在运行时判 ...

  7. java 对象序列化

    java 对象序列化 package org.rui.io.serializable; import java.io.ByteArrayInputStream; import java.io.Byte ...

  8. 理解Java对象序列化(二)

    关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结.此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制.在撰写本文时,既参考了Th ...

  9. 关于 Java 对象序列化您不知道的 5 件事

    数年前,当和一个软件团队一起用 Java 语言编写一个应用程序时,我体会到比一般程序员多知道一点关于 Java 对象序列化的知识所带来的好处. 关于本系列 您觉得自己懂 Java 编程?事实上,大多数 ...

  10. 深入分析Java的序列化与反序列化

    序列化是一种对象持久化的手段.普遍应用在网络传输.RMI等场景中.本文通过分析ArrayList的序列化来介绍Java序列化的相关内容.主要涉及到以下几个问题: 怎么实现Java的序列化 为什么实现了 ...

随机推荐

  1. beanutils获取带参数get方法

    public Employee getEmployee(int index) {        return new Employee();    } 1.PropertyUtils.getIndex ...

  2. DIP And DI

    依赖倒置(DIP)与依赖注入(DI)   依赖倒置原则(Dependency Inversion Principle)为我们提供了降低模块间耦合度的一种思路,依赖注入(Dependency Injec ...

  3. iOS基础 - 手势识别 与 手势说明

    一.使用手势识别的四个步骤 1> 实例化手势识别 - (id)initWithTarget:(id)target action:(SEL)action; 2> 设置手势识别属性 3> ...

  4. ROWNUMBER()、RANK()、DENSE_RANK()、NTILE1

    SQLServer针对排名函数ROWNUMBER().RANK().DENSE_RANK().NTILE的研究!~ 相信大家在软件工程中经常会遇到对某些数据进行排名的问题,尤其是对于电子商务的HR来说 ...

  5. QuickWebApi2:使用Lambda方式,完成对WebApi的开发和调用-文档的生成

    续 QuickWebApi:使用Lambda方式,完成对WebApi的开发和调用 上一篇完成了主要的功能,本次修订主要重构了对接口文档的生成规范,使之可读性更佳,甚至可以作为接口文档进行发布(当然,在 ...

  6. C#对html的操作

    1,获取相对路径的html然后保存到本地路径 /// <summary> /// Html方法 /// </summary> /// <returns></r ...

  7. arcengine 实现调用arctoolbox中的dissolove

    ESRI.ArcGIS.Geoprocessor.Geoprocessor geoprocessor = new Geoprocessor(); ESRI.ArcGIS.DataManagementT ...

  8. Gink掉过的坑(一):将CCTableView导入到lua中

    环境: 系统:win7 64位 cocos2dx:cocos2d-2.1rc0-x-2.1.3 Visual Studio: 2012 由于项目是用lua写的,需要将cocos2dx中的方法导入到lu ...

  9. GitHub上搭建个人网站

    大致如下步骤: 1.注册Git账号 2.创建SSH keys 3.新建repository --- 4.设置网站 5.clone库到本地 6.提交.上传 7.预览 本教程默认你了解GitHub的基础之 ...

  10. JavaScript中变量声明有var和没var的区别

    JavaScript中变量声明有var和没var的区别 JavaScript中有var和没var的区别 Js中的变量声明的作用域是以函数为单位,所以我们经常见到避免全局变量污染的方法是 (functi ...