欢迎访问北大青鸟鲁广校区~

  1. 加入收藏
  2. 设为主页
  3. 学校简介
北大青鸟鲁广校区

17740513250

三分钟了解北大青鸟

×
  • 数据加载中...

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的序列化与反序列化#,宏鹏发布于北大青鸟鲁广校区。java技术教程的分享和学习能帮助学习java的人了解到更多的知识。北大青鸟武汉宏鹏鲁广校区下面进行java序列化和反序列化的分享,帮助大家了解java开发的更多知识。

专业老师指导

专业老师指导

赵老师

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

培训咨询客服

培训咨询客服

陈老师

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

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

大家都在看的大家都在看的Java开发

热门课程

更多>>
  • 数据加载中...
7天免费试学

7天课程免费试学

实战学习干货限时领取

行业解读+大咖授课+项目实操
10年以上业内强师集结,手把手带你蜕变精英!

点我咨询
×
在线咨询更多问题

如您有任何疑问
在线咨询随时为您解答或拨打咨询热线:13125006136

×
  • 姓 名*
  • 手 机*
  • QQ号/微信号
  • 所报学科 *
  • 其他备注
  • 验证码 获取验证码 *
  • 温馨提示:请保持手机畅通,咨询老师将为您提供专属的一对一报名服务。