北大青鸟

网站首页 > 常见IT技术问题 > Java开发 >

站内公告

JAVA技术教程之java的序列化与反序列化

责任编辑:宏鹏来源:武汉北大青鸟鲁广校区时间:2015-10-19 11:26:41
导读:java技术教程的分享和学习能帮助学习java的人了解到更多的知识。北大青鸟武汉宏鹏鲁广校区下面进行java序列化和反序列化的分享,帮助大家了解java开发的更多知识。

java技术教程的分享和学习能帮助学习java的人了解到更多的知识。北大青鸟武汉宏鹏鲁广校区下面进行java序列化和反序列化的分享,帮助大家了解java开发的更多知识。

基本概念:

序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

昨天在一本书上看到了,好好实践了一下,序列化为一般文件,也序列化为XML文件(使用XStream)。

用于序列化的实体类Person.java 代码如下(记得需要实现Serializable接口):

import java.io.Serializable;

@SuppressWarnings("serial")

public class Person implements Serializable{

private String name;

private int age;

public Person(){

}

public Person(String str, int n){

System.out.println("Inside Person's Constructor");

name = str;

age = n;

}

String getName(){

return name;

}

int getAge(){

return age;

}

}

[hr]

序列化、反序列化为一般的文件,SerializeToFlatFile.java类的代码如下:

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

public class SerializeToFlatFile {

public static void main(String[] args) {

SerializeToFlatFile ser = new SerializeToFlatFile();

ser.savePerson();

ser.restorePerson();

}

public void savePerson(){

Person myPerson = new Person("Jay",24);

try {

FileOutputStream fos = new FileOutputStream("E:\\workspace\\2010_03\\src\\myPerson.txt");

ObjectOutputStream oos = new ObjectOutputStream(fos);

System.out.println("Person--Jay,24---Written");

System.out.println("Name is: "+myPerson.getName());

System.out.println("Age is: "+myPerson.getAge());

oos.writeObject(myPerson);

oos.flush();

oos.close();

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

}

public void restorePerson() {

try {

FileInputStream fis = new FileInputStream("E:\\workspace\\2010_03\\src\\myPerson.txt");

ObjectInputStream ois = new ObjectInputStream(fis);

Person myPerson = (Person)ois.readObject();

System.out.println("\n--------------------\n");

System.out.println("Person--Jay,24---Restored");

System.out.println("Name is: "+myPerson.getName());

System.out.println("Age is: "+myPerson.getAge());

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

}

}

运行结果为(console输出),当然可以查看到myPerson.txt文件已经生成:

Inside Person's Constructor

Person--Jay,24---Written

Name is: Jay

Age is: 24

--------------------

Person--Jay,24---Restored

Name is: Jay

Age is: 24

[hr]

序列化、反序列化为XML文件,我使用了XStream来序列化,需要引入xstream-1.3.1.jar包的支持,

//xstream.codehaus.org/download.html 处可以下载jar,然后引入到Eclipse中的build path中。

Serialize.java的代码如下:

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import com.thoughtworks.xstream.*;

public class Serialize {

public static void main(String[] args) {

Serialize ser = new Serialize();

ser.serializeToXml();

ser.deSerializeFromXml();

}

public void serializeToXml(){

Person[] myPerson = new Person[2];

myPerson[0] = new Person("Jay",24);

myPerson[1] = new Person("Tom",23);

XStream xstream = new XStream();

try {

FileOutputStream fos = new FileOutputStream("E:\\workspace\\2010_03\\src\\myPerson.xml");

xstream.toXML(myPerson,fos);

} catch (FileNotFoundException ex) {

ex.printStackTrace();

}

System.out.println(xstream.toXML(myPerson));

}

public void deSerializeFromXml(){

XStream xs = new XStream();

Person[] myPerson = null;

try {

FileInputStream fis = new FileInputStream("E:\\workspace\\2010_03\\src\\myPerson.xml");

myPerson=(Person[])xs.fromXML(fis);

if (myPerson != null)

{

int len = myPerson.length;

for (int i=0;i

{

System.out.println(myPerson.getName());

System.out.println(myPerson.getAge());

}

}

} catch (FileNotFoundException ex) {

ex.printStackTrace();

}

}

}

运行结果为(console输出),当然可以查看到myPerson.xml文件已经生成:

Inside Person's Constructor

JAVA技术教程之java的序列化与反序列化知识的分享让更多喜欢java分析的人了解到更多的问题。北大青鸟武汉宏鹏鲁广校区的老师帮助大家进行了解,更多问题解答请咨询在线老师或致电:17740513250

本文标题:JAVA技术教程之java的序列化与反序列化,责任编辑:宏鹏,来源:武汉北大青鸟鲁广校区栏目,于2015-10-19 11:26:41发布于北大青鸟鲁广校区。java技术教程的分享和学习能帮助学习java的人了解到更多的知识。北大青鸟武汉宏鹏鲁广校区下面进行java序列化和反序列化的分享,帮助大家了解java开发的更多知识。

专业老师指导

赵老师

赵老师

从事IT教育培训十年有余,致力于帮助广大学子找到适合自己的专业

立即在线咨询

培训咨询客服

陈老师

陈老师

IT培训专业客服,用自己的真诚解决了无数学子的困惑

立即在线咨询

本文地址:https://m.027hpedu.com/wenda/java/1047.html

文章标题:JAVA技术教程之java的序列化与反序列化

上一篇:武汉北大青鸟java课程之Java中乱码或者识别中文方法

下一篇:ASP.NET网站开发需要程序员注意的事项

热点关注

推荐Java开发

热门Java开发

预约你的精彩未来

预约将免费领取7天课程体验卡

-------请选择试预约课程-------

JAVA
WEB前端
PHP
UI设计
Python
电子商务
视频剪辑
大数据工程师
平面设计

83345人已领取

全国百余家校区

只为您方便就学

北大青鸟鲁广校区

北大青鸟鲁广校区

武汉市洪山区珞喻路724号(地铁二号线光谷广场站F口出)

预约到校
领取学习大礼包

首页

热门课程

视频网课

新闻资讯

关于学校

联系学校

预约选课申请

  • 预约时间

    请选择预约时间

  • 预约课程

    请选择预约课程

  • 姓   名
  • 手机号
  • QQ 号
  • 微信号

添加老师微信号

专业老师24小时1对1学习指导

定制专属于你的专属学习方案

微信号:17740513250

复制老师的微信号

复制成功啦

快去微信添加老师为好友吧~

北大青鸟小青

微信号:17740513250

北大青鸟小青

微信号:17740513250

设置备注
小主知道啦