上海福彩快3开奖结果 www.x1m79.cn IT职业教育

华中地区北大青鸟校区IT集训营

027-87807717

上海福彩快3开奖结果 > 热门IT技术教程 > Java技术教程 > > JAVA技术教程之java的序列化与反序列化

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

时间:2012-07-09 14:14 来源:北大青鸟武汉宏鹏鲁广校区作者:027hpedu
导读:java技术教程的分享和学习能帮助学习java的人了解到更多的知识。北大青鸟武汉宏鹏鲁广校区下面进行java序列化和反序列化的分享,帮助大家了解java开发的更多知识。

  java技术教程的分享和学习能帮助学习java的人了解到更多的知识。上海福彩快3开奖结果武汉宏鹏鲁广校区下面进行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分析的人了解到更多的问题。北大青鸟武汉宏鹏鲁广校区的老师帮助大家进行了解,更多问题解答请咨询在线老师或致电:027-87807717

告诉我们,你现在想了解什么?

精彩专题——96%的同学看到这里都会点击下面的专题

Copyright (c) 2006-2020 武汉宏鹏教育咨询有限公司 版权所有 All Rights Reserved.

  • 端午出行走雅康高速 请先看看这份出行指南 2019-06-25
  • 湖北菜果茶监测合格率98% 2019-06-25
  • 为何一个不在城中心的儿童之家成为全省最美? 2019-06-01
  • 西藏:持续推进治沙造林工作 筑牢生态安全屏障 2019-06-01
  • 吴运波在石塘村调研脱贫攻坚和新农村建设工作 2019-05-26
  • 浙江吉利控股集团有限公司获第十二届人民企业社会责任奖年度扶贫奖 2019-05-17
  • 首例英烈保护公益诉讼案宣判:被告公开赔礼道歉 2019-05-17
  • 奋力谱写新时代追赶超越新篇章——访陕西省委书记胡和平 2019-05-07
  • 中东部高温降雨齐上阵 长江中下游多省份有暴雨 2019-04-29
  • 【理上网来辉煌十九大】墨西哥专家:未来中国有能力在国际事务上承担更重要的责任 2019-04-29
  • 人民日报评论员:新时代推进生态文明建设的重要遵循 2019-04-28
  • 回复@海之宁:你想自主劳动?全民所有的生产资料凭啥让你自主? 2019-04-28
  • 海南学习十九大精神--人民网海南频道--人民网 2019-04-14
  • 芦子沟里藏古宅文章中国国家地理网 2019-04-14
  • 走心走访大调研 深入基层零距离 2019-03-31
  • 广东新11选5快彩乐 欢乐升级等级赤脚规则 极速11选5微信计划群 天津快乐10分钟 香港六合彩码报 山西11选5任五 乒乓球胶皮的价格选择 看足球用什么直播软件 吉林时时彩购买 单双各四肖中特 2019年127期找生肖图 金牌一肖中特图 双色球红球尾数折线图 香港白小姐71期 挂牌一肖中特免费资料