从数组列表和副Versa写入文件

时间:2013-08-18 09:46:34

标签: java serialization arraylist outputstream file-handling

我创建了一个带有3个按钮和1个文本字段的小程序,供用户输入。该程序的作用是,它从用户获取输入并将其存储到arraylist,然后当按下第二个按钮时,它应该将arraylist写入文件。当按下第三个按钮时,它应该从文件中读取到一个arraylist。

我的问题是我只得到第一条记录,这意味着如果我输入2个名字,我只会在按下第三个按钮时显示第一个名字。 这就是我所做的:

2个arraylists被贴上了十分之一。

 ArrayList<Person>list=new ArrayList<Person>()                                  ArrayList<Person>list2=new ArrayList<Person>();

按下时用户输入的按钮

   String firstname=txtname.getText();

   Person p1=new Person(firstname,"pamodya","15","08","1995");

    list.add(p1);

将第一个arraylist对象写入文件的按钮。       尝试{

        FileOutputStream write=new FileOutputStream("hello.txt");
        ObjectOutputStream writeFile=new ObjectOutputStream(write);

       writeFile.writeObject(list);
      writeFile.flush();
     writeFile.close();

       }catch(Exception e){e.getMessage();}

按钮从文件中读取并在按下时打印到文本区域。

 try{
            FileInputStream read=new FileInputStream("hello.txt");
           ObjectInputStream readFile=new ObjectInputStream(read);


           Person p1=(Person)readFile.readObject();

          list2.add(p1);

          readFile.close();

          txtarea.setText(p1.getName());


    }catch(Exception e){e.getMessage();}

这里似乎有什么问题? 谢谢你的时间。

编辑:

这是错误

enter image description here

3 个答案:

答案 0 :(得分:1)

您正在撰写list,但正在阅读Person。您应该获得ClassCastException代码。

比较这两个:

 writeFile.writeObject(list);
 Person p1=(Person)readFile.readObject();

你应该使用:

 List<Person> outList=(List)readFile.readObject();
 list2.addAll(outList);

答案 1 :(得分:1)

恕我直言,它看起来像你没有在你的第三个按钮循环任何结果。您只需找到第一个结果并显示它。

答案 2 :(得分:1)

以下列出了需要确保的事项:

1)您的Person类是否可序列化? 2)当您打开文件时,是否打开它以进行追加? 3)我注意到你写了列表对象。但是你读了Person对象。