您的位置:首页 > 编程语言 > Java开发

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

2008-09-16 08:10 706 查看
上节课我们讲了4种流,只有序列化的这个没有细讲。它是传对象的,如果想把一个对象保存在硬盘上,就只能使用这种方式。它的关键是将它的状态以一种串行格式表示出来,以便以后读该对象时能够把它读出来。对象的串行化对于大多数java应用是非常重要的:
u Java的远程方法调用(RMI),通过socket通信。这个东西我们会在后面的教程讲到。

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

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

实践:

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

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,执行之后



图23-1

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



图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所示读出时间


图23-3

上述源码打包下载

对于一个可以被序列化的类,它会实现一个Serializable的接口。那是个空接口,什么方法也没有只是一个标志而已。这在J2EE,(现在叫java EE)中,使用EJB时是非常重要的。如果大家以后能继续学习学到EJB的时候,再具体了解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: