使用ArrayList在java中写入/读取对象并将其添加到文件中
做大学考试准备(Java OOP),我真的被什么难倒了。任何帮助都将不胜感激。在这一年中,我错过了大部分的I.O部分(重大错误)。无论如何,我会尽力解释我的问题 我的应用程序使用swing UI,用户应该能够使用名称、数字和余额(字符串int和double)创建银行帐户。我使用Account类来设置、获取和存储变量 我需要的功能是添加一个新帐户,查看所有帐户,然后将所有客户详细信息存储在一个文件中,并能够在应用程序重新打开后读取它们。Im使用ArrayList存储使用ArrayList在java中写入/读取对象并将其添加到文件中,java,file,arraylist,io,Java,File,Arraylist,Io,做大学考试准备(Java OOP),我真的被什么难倒了。任何帮助都将不胜感激。在这一年中,我错过了大部分的I.O部分(重大错误)。无论如何,我会尽力解释我的问题 我的应用程序使用swing UI,用户应该能够使用名称、数字和余额(字符串int和double)创建银行帐户。我使用Account类来设置、获取和存储变量 我需要的功能是添加一个新帐户,查看所有帐户,然后将所有客户详细信息存储在一个文件中,并能够在应用程序重新打开后读取它们。Im使用ArrayList存储ArrayList accLis
ArrayList accList代码>这里是我到目前为止为将对象写入文件而想到的(我已经有了相关的文件处理代码,所以我不打算包括catch语句):
toString()方法是Account类中我自己的@Override方法,可以很好地打印名称。当我按两次“查看帐户”时,问题就会出现。它会重新打印每次查看的输出,因此,如果第一次查看时有1个帐户,那么下次将是2个,然后是3个等等。我知道对于这样一个冗长的问题,可能有一个简单的答案,但我已经看了很久了,需要另一个视角 你让你的生活很艰难。与其循环写入和读取每个帐户,不如编写列表本身(仅一次调用ObjectOutputStream.writeObject()),然后读取列表本身(仅一次调用ObjectInputStream.readObject())?是的,正如我所说,我只是在学习,错过了大部分的文件IO课程,所以我不得不自己学习大部分内容,显然错过了几个关键部分。你是说我可以用writeObject写整个arrayList?是的。ArrayList是可序列化的,因此您可以使用writeObject()对其进行序列化。谢谢,哈哈,我知道这会比我所做的更简单。它正在工作:)
Account account = new Account(name, number, balance);
accList.add(account);
try {
ObjectOutputStream out;
out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(output)));
for (int i = 0; i < accList.size(); i++) {
out.writeObject(accList.get(i));
}
out.close();
}
ObjectInputStream in = null;
Account account;
try {
in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(output)));
while (true) {
account = (Account) in.readObject();
accList.add(account);
jTextArea1.setText(accList.toString());
}
}