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

Java基础
浅谈Java语言接口与继承本质区别
java基础 -- JAVA字符集
JAVA基础知识精华总结
孙鑫老师原创:Servlet与Tomcat
java基础知识
Java程序开发中应用线程
JAVA基础之面向对象
关于Java IO流学习总结
如何用Java实现FTP服务器
Java抽象类和接口和继承之间关系
Java获取URL对应的资源
详解Java多线程开发中的数据同步
Java中跳出多层循环的简单方法
Java多线程程序设计初步入门
JavaScript(一)
JavaScript(二)
Java基础:JAVA SE基础部分(一)
Java基础:JAVA SE基础部分(二)
Java基础:Ruby将赶超Java吗?
java基础:小编浅谈java中的一些编程思想

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-23   浏览: 211 ::
收藏到网摘: 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