帮助解决Java I / O的问题

时间:2010-11-15 17:12:49

标签: java file-io

我创建了一个名为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()方法来执行写入工作?你能指导我吗?

3 个答案:

答案 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)

卡里安娜给出了一个很好的答案。我只想添加Linked list本身实现serializable,所以你可以将它写入文件并将其读回。只是不要忘记使用ObjectOutputStream和ObjectInputStream包装输出和输入流。

就是这样。现在实施你的作业并学习新的东西!

答案 2 :(得分:0)

提示:您需要使用循环结构,例如for或while循环,它将遍历您的动物列表。例如,

你需要在某处声明你的动物名单。类似的东西:

List<Animal> animals = new ArrayList<Animal>();

并循环遍历它们,例如:

for (Animal animal:animals)
{
  // Do appropriate thing
}

我会把剩下的留给你填写,我怀疑你会通过这种方式获得更多的锻炼: - )。