我创建了一个名为Animal的类,实现了Serializable。 Animal类的每个对象都有一个名称和一个类型。在我的程序的Main方法中,我将创建一个Animal类型的对象,并为其指定一个名称和类型。然后我想将对象写入文件,然后读取该文件到Animal对象。为了这个目的,我创建了以下方法:
Animal anim=new Animal();
Animal Anim2 = new Animal();
//writing into the file
private void writeOnFile() {
try{
FileOutputStream fout = new FileOutputStream("c:\\animal.ser");
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(anim);
oos.close();
System.out.println("Done");
}catch(Exception ex){
ex.printStackTrace();
}
}
// reading the file
private Animal readFromFile() {
try{
FileInputStream fin = new FileInputStream("c:\\animal.ser");
ObjectInputStream ois = new ObjectInputStream(fin);
anim = (Animal) ois.readObject();
ois.close();
return anim;
}catch(Exception ex){
ex.printStackTrace();
return null;
}
}
但现在我想创建一个linkedList并将Animal的几个对象添加到该链接列表中。如何更改writeOnFile()和readFromFile()方法来执行写入工作?你能指导我吗?
答案 0 :(得分:1)
Karianna的答复很好,使用foreach。但是这个作业显然侧重于Serializable接口的功能,所以让我们使用它。
由于您的Animal类实现了Serializable以及LinkedList类,您只需将LinkedList传递给ObjectOutputStream并以类似的方式加载它。
LinkedList<Animal> list = new LinkedList<Animal>();
(... add some elements ...)
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(list);
装载将是你的一部分,因为你想从这个练习中学到一些东西,不是吗;)
答案 1 :(得分:1)
就是这样。现在实施你的作业并学习新的东西!
答案 2 :(得分:0)
提示:您需要使用循环结构,例如for或while循环,它将遍历您的动物列表。例如,
你需要在某处声明你的动物名单。类似的东西:
List<Animal> animals = new ArrayList<Animal>();
并循环遍历它们,例如:
for (Animal animal:animals)
{
// Do appropriate thing
}
我会把剩下的留给你填写,我怀疑你会通过这种方式获得更多的锻炼: - )。