我创建了一个带有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();}
这里似乎有什么问题? 谢谢你的时间。
编辑:
这是错误
答案 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对象。