江西广告网
标题:
java初学者实践教程23-序列化
[打印本页]
作者:
晕了我呀
时间:
2009-1-6 11:19
标题:
java初学者实践教程23-序列化
上节课我们讲了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的时候,再具体了解。
java初学者实践教程24-反射
查看原文>>
欢迎光临 江西广告网 (http://bbs.jxadw.com/)
Powered by Discuz! X3.2