Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ArrayList在java中写入/读取对象并将其添加到文件中_Java_File_Arraylist_Io - Fatal编程技术网

使用ArrayList在java中写入/读取对象并将其添加到文件中

使用ArrayList在java中写入/读取对象并将其添加到文件中,java,file,arraylist,io,Java,File,Arraylist,Io,做大学考试准备(Java OOP),我真的被什么难倒了。任何帮助都将不胜感激。在这一年中,我错过了大部分的I.O部分(重大错误)。无论如何,我会尽力解释我的问题 我的应用程序使用swing UI,用户应该能够使用名称、数字和余额(字符串int和double)创建银行帐户。我使用Account类来设置、获取和存储变量 我需要的功能是添加一个新帐户,查看所有帐户,然后将所有客户详细信息存储在一个文件中,并能够在应用程序重新打开后读取它们。Im使用ArrayList存储ArrayList accLis

做大学考试准备(Java OOP),我真的被什么难倒了。任何帮助都将不胜感激。在这一年中,我错过了大部分的I.O部分(重大错误)。无论如何,我会尽力解释我的问题

我的应用程序使用swing UI,用户应该能够使用名称、数字和余额(字符串int和double)创建银行帐户。我使用Account类来设置、获取和存储变量

我需要的功能是添加一个新帐户,查看所有帐户,然后将所有客户详细信息存储在一个文件中,并能够在应用程序重新打开后读取它们。Im使用ArrayList存储
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());
    }
}