一个类要具有可序列化的特性就必须实现接口java.io.Serializable,对于可以序列化的对象可以用类java.io.ObjectOutputStream来输出对象,而且可以用类java.io.ObjectInputStream来读入该对象
下面新建一个用户类的对象,用相应信息进行初始化,在程序中使用对象序列化将其保存到某个文件中,然后从该文件中读出此对象并显示有关用户信息
首先建一个用户类和统计用户个数的类,用户拥有用户名和密码,并在执行构造函数时统计已有的用户数
import java.io.Serializable;
public class cam1 implements Serializable
{
private static final long serialVersionUID = 1L;
public String name;
public String password;
public cam1(String x,String y)
{
name=x;
password=y;
cam4.num++;//人数加1
}
public void print()
{
System.out.println("该用户的用户名是:"+name);
System.out.println("该用户的密码是:"+password);
}
}
public class cam4
{
public static int num=0;
}
读入对象,并输出该对象
import java.io.*;
public class cam2
{
public static void main(String args[])
{
try
{
ObjectOutputStream f=new ObjectOutputStream(new FileOutputStream("object.dat"));
cam1 a=new cam1("Cambridge1","123");
cam1 b=new cam1("Cambridge2","124");
f.writeObject(a);
f.writeObject(b);
//a.print();
//b.print();
f.close();
cam3.main(null); //不关闭当前窗口,否则cam4.num会变为0
}
catch(Exception e)
{
System.err.println("发生异常:"+e);
e.printStackTrace();
}
}
}
import java.io.*;
public class cam3
{
public static void main(String args[])
{
int i;
try
{
ObjectInputStream f=new ObjectInputStream(new FileInputStream("object.dat"));
System.out.println("当前已注册人数: "+cam4.num);
for(i=0;i<cam4.num;i++) //循环读出对象
{
cam1 s=(cam1)(f.readObject());
s.print();
}
f.close();
}
catch(Exception e)
{
System.err.println("发生异常:"+e);
e.printStackTrace();
}
}
}