当前位置: 首页 > 知识库问答 >
问题:

使用带有字符串的文件加载ArrayList

程谭三
2023-03-14

我正在创建一个跟踪员工的程序。我有一个ArrayList跟踪当前的员工。由于ArrayLists在程序重新启动后不会被保留,我需要找到一种方法来保留员工列表。我决定创建一个包含所有员工列表的文件,然后每次程序运行时,它都会将该文件导入到ArrayList中。我创建了一个savehtml" target="_blank">方法和一个addEmployee方法,这就是我目前所拥有的:

创建新员工的代码(不是addEmployee方法):

System.out.println("Please enter the new employee's first name:");
firstName = addEmployee.nextLine();
System.out.println("Please enter the new employee's last name");
lastName = addEmployee.nextLine();
addEmployee(firstName, lastName); //calling the addEmployee method
save("employeetest"); //saving the array

保存方法:

public static void save(String fileName) throws FileNotFoundException {
    String tmp = employees.toString();
    PrintWriter pw = new PrintWriter(new FileOutputStream(fileName,true));
    pw.write(tmp);
    pw.close();
}

问题是,每次创建新员工时,都会再次保存整个ArrayList而不仅仅是员工姓名。因此,我决定在文件末尾加载员工的名字(作为字符串)。但是现在我需要将字符串文件加载到ArrayList中。我应该如何将字符串从文件转换为ArrayList然后加载到ArrayList中?

共有1个答案

笪波鸿
2023-03-14

您可以做的是序列化数组。你可以在这里读到。

http://beginnersbook.com/2013/12/how-to-serialize-arraylist-in-java/

如果您这样使用它,它将解决您的问题:
当您启动程序时,反序列化存储在文件中的数组。退出程序后,运行save方法(应该对其进行调整,以便将arraylist序列化到文件中)。

 类似资料:
  • 问题内容: 我已经在过去4-5个小时内进行了研究,尽管找到了从几种方法到整个〜100行类的所有内容的“答案”,但似乎找不到真正 有效 的答案。我无法想象没有一些简单的功能可以完成如此​​琐碎的事情:P 我有一组预先存在的公用/专用密钥(实际上,有两组-一组由ssh-keygen生成,另一组由openssl生成,所以..什么格式都可以用)。 我所追求的只是一个简单的java等效于我在python中编

  • 在过去的4-5个小时里,我一直在研究这个问题,尽管找到了从几个方法到整个100行课程的“答案”,但似乎找不到一个真正有效的答案。我无法想象,没有什么简单的函数可以做这样一件小事:P 我有一组预先存在的公钥/私钥(实际上,两组-一组由ssh-keygen生成,另一组由openssl生成,所以... 我所追求的只是一个简单的java,相当于我用python编写的东西- 任何帮助都会很棒!

  • 我在从AWS下载上面的文件时遇到了一些麻烦。我试图用CouldBerry Explore和Java下载这个文件,但失败了。aws文档说我需要特殊的处理。(https://docs.aws.amazon.com/amazons3/latest/dev/usingmetadata.html)那么,你能告诉我如何用“:”下载这个文件吗? 以下是我的文件信息。 文件名:“E:\home\temp\test

  • 问题内容: 如何从二进制文件写入/读取字符串? 我试过使用/ (DataOutputStream / DataInputStream),但这太麻烦了。 谢谢。 问题答案: 暂时忘掉FileWriter,DataOutputStream。 对于二进制数据,使用和分类。他们处理。 对于文本数据,使用和分类。他们处理可以存储所有类型的文本,因为它内部使用Unicode。 通过指定默认为OS编码的编码,可

  • 我有一个逗号分隔的文件,其中有许多行类似于下面的一行。 引号用于转义用于表示多个值的分隔符逗号。 现在,如果可能的话,如何使用在逗号分隔符上拆分上述值?

  • 问题内容: 我试图理解字符串比较与字符串比较的输出。需要明确的是,我拥有使用==和equals比较两个字符串的类。我试图将==和equals()的输出合并为字符串。equals()的输出会连续显示,但==的输出不会 连续显示。使用Java的装箱功能,将与字符串连接的布尔值联系起来。equals和==都返回布尔值。那么为什么会有这种差异呢?有人可以解释吗? 输出 更新:答案 如果不使用s1 == s