import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;public class ObjectSer
{ public static void main(String args[])
throws IOException,ClassNotFoundException{
int i;
Employee[] staff = new Employee[3];
staff[0] = new Employee("Dong",600,new Day(1998,9,1));
staff[1] = new Employee("Wang",1000,new Day(1958,2,15));
staff[2] = new Employee("Meng",750,new Day(1995,3,15));
FileOutputStream fo = new FileOutputStream("data.txt");
//so强制转换成fo?
ObjectOutputStream so = new ObjectOutputStream(fo);
try
{
//so.writeObject(staff[i]),“so”后面加“.”连接另一个方法“writeObject()”的用法,求解。
for(i=0;i<3;i++) so.writeObject(staff[i]);
so.close();
}
catch (IOException e)
{
System.out.println("Saving Error:"+e);
System.exit(1);
}
for(i=0;i<3;i++) staff[i]=null;
FileInputStream fi = new FileInputStream("data.txt");
ObjectInputStream si = new ObjectInputStream(fi);
try{
for(i=0;i<3;i++)
staff[1]=(Employee) si.readObject();
si.close();
}
catch(IOException e){
System.out.print("Reading Error:"+e);
System.exit(1);
}
//staff[i].print(),“staff[i]”后面加“.”连接另一个方法“print()”的用法,求解。
for(i=0;i<3;i++) staff[i].print();
}
}
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;public class ObjectSer
{ public static void main(String args[])
throws IOException,ClassNotFoundException{
int i;
Employee[] staff = new Employee[3];
staff[0] = new Employee("Dong",600,new Day(1998,9,1));
staff[1] = new Employee("Wang",1000,new Day(1958,2,15));
staff[2] = new Employee("Meng",750,new Day(1995,3,15));
FileOutputStream fo = new FileOutputStream("data.txt");
//so强制转换成fo?
ObjectOutputStream so = new ObjectOutputStream(fo);
try
{
//so.writeObject(staff[i]),“so”后面加“.”连接另一个方法“writeObject()”的用法,求解。
for(i=0;i<3;i++) so.writeObject(staff[i]);
so.close();
}
catch (IOException e)
{
System.out.println("Saving Error:"+e);
System.exit(1);
}
for(i=0;i<3;i++) staff[i]=null;
FileInputStream fi = new FileInputStream("data.txt");
ObjectInputStream si = new ObjectInputStream(fi);
try{
for(i=0;i<3;i++)
staff[1]=(Employee) si.readObject();
si.close();
}
catch(IOException e){
System.out.print("Reading Error:"+e);
System.exit(1);
}
//staff[i].print(),“staff[i]”后面加“.”连接另一个方法“print()”的用法,求解。
for(i=0;i<3;i++) staff[i].print();
}
}
解决方案 »
- 求帮助一个读取TXT文件并排序再输出的问题
- 苦恼的java问题~~
- 主线程何时结束的问题
- 传递参数中的疑问
- Java 中 对象在堆中的模型 方法在放那里?与C++的区别?
- 关于nio的负载均衡 以及 3个db(一个sqlserver 两个mysql分别在不同IDC)这种奇怪
- 正则表达式-只能输入中文和空(什么都不输入)
- 想了就让人脱落头发的问题!~~~
- 提个关于JComboBox的问题
- 请问import sun.net.TelnetInputStream; 和import sun.net.ftp.*; 这两个导入的声明,是不是只有在JBuilder环境中才能使用啊?
- 构造函数疑问
- AbstractCollection的removeAll方法实现的一个小疑问
2,writeObject用法api有说明。
3,print用法,api也有说明。
1.把文件流转化成对象流
2.把staff[i]对象序列化。
3.反序列化对象staff[i],调用staff[i]对象方法print(),可以测试是不是序列化反序列化成功。
public ObjectOutputStream(OutputStream out) throws IOException {
}
2. 已经new了ObjectOutputStream对象 可以直接加.接这个对象所包含的方法
3. Employee类自带的一个print()方法
可以看下类的源代码就能很快理解是干嘛用的,为什么这么用。
比如B b = new B(a);这种情况一般是a的接口不够多,但是最好别直接修改a的接口和实现,所以新实现一个B来拓展a的接口,这样就不用对a修改,达到经常说的对修改关闭,对拓展开放的思想。