当前位置: 首页 > 图文教程 > Java技术 > Java基础 > 通过Java套接字传递对象(2)

Java基础
Java串行端口技术协议
Java 1.5中面向方面(AOP)编程
实现基于Aspectwerkz的AOP开发
EJB 3.0开发指南之消息驱动Bean
Java堆的管理--垃圾回收
EJB 3.0开发指南之依赖注入
EJB3.0开发指南之有状态会话Bean
EJB3.0开发指南之无状态会话Bean
基于Java的企业分布式应用
J2SE5.0新特性之ProcessBuilder
J2SE5.0新特性之使用代理服务器
Java数据对象技术JDO
Java中ThreadLocal的设计与使用
Hibernate下数据批量处理
Java程序设计中的接口应用
Java中利用JMF编写摄像头拍照程序
性能、规模、风险 初评hibernate
Struts+Hibernate中解决汉字编码
Spring Framework标记库初学指南
基于Java的IDEA加密算法

Java基础 中的 通过Java套接字传递对象(2)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-23   浏览: 209 ::
收藏到网摘: n/a

序列化用户自己的类

 

  现在,让我们看看如何序列化用户自己写的类。在这个例子中,我们将建立一个用户类UserInfo,见例程3。为了让它可序列化,UserInfo类实现了Serializable接口。

 

  例程 3: UserInfo.java

 

import java.io.*

import java.util.*

 

public class UserInfo implements Serializable {

String name = null

 

public UserInfoString name {

this.name = name

}

 

public void printInfo() {

System.out.println"The name is: "+name);

}

}

 

 

  下一步就是建立一个能创建UserInfo类实例的类,然后将对象写入输出流中,如例程4。本例中的输出流是一个名为"name.out"的文件。要注意的是,例程4 中的writeObject方法可以被调用任意多次,将任意多个对象写入输出流。

 

  例程 4: SaveInfo.java

 

import java.io.*

import java.util.Date

 

public class SaveInfo {

 

public static void mainString argv[] throws Exception {

FileOutputStream fos = new FileOutputStream"name.out");

ObjectOutputStream oos = new ObjectOutputStreamfos);

// create two objects

UserInfo user1 = new UserInfo"Java Duke");

UserInfo user2 = new UserInfo"Java Blue");

// write the objects to the output stream

oos.writeObjectuser1);

oos.writeObjectuser2);

oos.flush();

oos.close();

fos.close();

}

}

 

 

  最后,我们写一个将已经保存的对象读入的类,并且调用一个如例程5所示的方法。和writeObject 一样,readObject方法能被调用任意多次,从输入流中读入任意多个对象。

 

  例程 5: ReadInfo.java

 

import java.io.*

import java.util.Date

 

public class ReadInfo {

 

public static void mainString argv[] throws Exception {

FileInputStream fis = new FileInputStream"name.out");

ObjectInputStream ois = new ObjectInputStreamfis);

// read the objects from the input stream the file name.out

UserInfo user1 = UserInfo ois.readObject();

UserInfo user2 = UserInfo ois.readObject();

// invoke a method on the constructed object

user1.printInfo();

user2.printInfo();

ois.close();

fis.close();

}

}

 

 

  要测试这个例子,请编译如下源文件:UserInfo.java, SaveInfo.java, ReadInfo.java。运行 SaveInfo,然后运行ReadInfo,将看到类似下面的输出结果:

 

  The name is: Java Duke

  The name is: Java Blue