网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 新手入门 > 基础入门 > java初学者实践教程23-序列化  

java初学者实践教程23-序列化

2007-07-21  作者:bitsCN整理  来源:  点评 投稿 收藏

     上节课我们讲了4种流,只有序列化的这个没有细讲。它是传对象的,如果想把一个对象保存在硬盘上,就只能使用这种方式。它的关键是将它的状态以一种串行格式表示出来,以便以后读该对象时能够把它读出来。对象的串行化对于大多数java应用是非常重要的:

中国网管论坛bbs.bitsCN.com

u       Java的远程方法调用(RMI),通过socket通信。这个东西我们会在后面的教程讲到。

网管u家u.bitsCN.com

u       对象永久化,就是把对象存硬盘上,或外存设备上。以便以后使用。

网管网www_bitscn_com

它的基础类是ObjectInputStreamObjectOutputStream,这两个流称为对象流 网管联盟bitsCN@com

      实践: 中国网管联盟bitsCN.com

 //这是一个保存对象的例子

网管联盟bitsCN_com

import java.io.*;

中国网管论坛bbs.bitsCN.com

import java.util.Date; 网管bitscn_com

public class SerializeDate { 网管bitscn_com

  SerializeDate() { 网管联盟bitsCN_com

    Date d = new Date ();

网管联盟bitsCN_com

    try {

网管下载dl.bitscn.com

      FileOutputStream f = 网管u家u.bitsCN.com

          new FileOutputStream ("date.ser"); //输出到date.ser这个文件中 网管u家u.bitsCN.com

      ObjectOutputStream s =

网管bitscn_com

          new ObjectOutputStream (f);

网管u家u.bitsCN.com

      s.writeObject (d); //写对象,将对象d写成是date.ser文件 网管论坛bbs_bitsCN_com

      s.close ();        //关闭流 中国网管联盟bitsCN.com

    } catch (IOException e) { 网管网www.bitscn.com

      e.printStackTrace (); 网管bitscn_com

    } } 网管u家u.bitscn@com

  public static void main (String args[]) {

中国网管联盟bitsCN.com

    new SerializeDate();

网管网www.bitscn.com

  }} 

网管网www_bitscn_com

中国网管联盟bitsCN.com

网管论坛bbs_bitsCN_com

如图所示23-1,执行之后

网管bitscn_com

网管网www_bitscn_com

23-1

中国网管论坛bbs.bitsCN.com

 

网管网www_bitscn_com

DOS窗口中没有看到结果,但是在这个文件夹内发现了一个date.ser的文件。它就是对象d写入磁盘的状态。如图23-2 网管u家u.bitscn@com

网管下载dl.bitscn.com

23-2 网管联盟bitsCN@com

那么保存了之后怎么在把这个date.ser文件读出来呢?

中国网管联盟bitsCN.com

实践: 中国网管论坛bbs.bitsCN.com

import java.io.*;

网管论坛bbs_bitsCN_com

import java.util.Date; 网管网www.bitscn.com

public class UnSerializeDate { 网管u家u.bitscn@com

  UnSerializeDate () {

网管网www.bitscn.com

    Date d = null; 中国网管论坛bbs.bitsCN.com

    try { //使用FileInputStream

中国网管联盟bitsCN.com

      FileInputStream f = 网管u家u.bitscn@com

          new FileInputStream ("date.ser");

网管u家u.bitscn@com

      ObjectInputStream s =

网管网www_bitscn_com

          new ObjectInputStream (f); 中国网管联盟bitsCN.com

      d = (Date) s.readObject ();//读对象

网管下载dl.bitscn.com

      s.close ();

网管u家u.bitsCN.com

    } catch (Exception e) { 网管u家u.bitscn@com

      e.printStackTrace (); }

网管bitscn_com

    System.out.println(

中国网管联盟bitsCN.com

      "date.ser文件,读取Date对象 ");

网管bitscn_com

    System.out.println("日期是: "+d);

中国网管论坛bbs.bitsCN.com

  }

网管u家u.bitscn@com

  public static void main (String args[]) { 中国网管联盟bitsCN.com

    new UnSerializeDate();

网管联盟bitsCN@com

  }} 

网管网www_bitscn_com

中国网管联盟bitsCN.com

如图23-3所示读出时间

网管联盟bitsCN_com

23-3 网管bitscn_com

上述源码打包下载

网管论坛bbs_bitsCN_com

对于一个可以被序列化的类,它会实现一个Serializable的接口。那是个空接口,什么方法也没有只是一个标志而已。这在J2EE,(现在叫java EE)中,使用EJB时是非常重要的。如果大家以后能继续学习学到EJB的时候,再具体了解。 网管网www.bitscn.com

 

网管网www.bitscn.com

java初学者实践教程24-反射 网管u家u.bitsCN.com

  网管论坛bbs_bitsCN_com

查看原文>>

网管网www_bitscn_com


TAGs   序列   教程   实践   学者   对象   new   date.ser   一个   //   Date      
 上一篇:java初学者实践教程22-输入/输出   下一篇:java初学者实践教程24-反射
java初学者实践教程23-序列化 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: