服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

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

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

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

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

它的基础类是objectinputstreamobjectoutputstream,这两个流称为对象流。

      实践:

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

import java.io.*;

import java.util.date;

public class serializedate {

  serializedate() {

    date d = new date ();

    try {

      fileoutputstream f =

          new fileoutputstream ("date.ser"); //输出到date.ser这个文件中

      objectoutputstream s =

          new objectoutputstream (f);

      s.writeobject (d); //写对象,将对象d写成是date.ser文件

      s.close ();        //关闭流

    } catch (ioexception e) {

      e.printstacktrace ();

    } }

  public static void main (string args[]) {

    new serializedate();

  }} 

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

java初学者实践教程23-序列化(图一)

图23-1

 

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

java初学者实践教程23-序列化(图二)

图23-2

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

实践:

import java.io.*;

import java.util.date;

public class unserializedate {

  unserializedate () {

    date d = null;

    try { //使用fileinputstream类

      fileinputstream f =

          new fileinputstream ("date.ser");

      objectinputstream s =

          new objectinputstream (f);

      d = (date) s.readobject ();//读对象

      s.close ();

    } catch (exception e) {

      e.printstacktrace (); }

    system.out.println(

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

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

  }

  public static void main (string args[]) {

    new unserializedate();

  }} 

如图23-3所示读出时间

java初学者实践教程23-序列化(图三)图23-3

上述源码打包下载

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

扫描关注微信公众号