上节课我们讲了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
在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的时候,再具体了解。
闽公网安备 35060202000074号