【问题标题】:Taking an ArrayList and putting in into a text file获取一个 ArrayList 并放入一个文本文件
【发布时间】:2012-05-07 05:08:13
【问题描述】:

我正在尝试编写的程序存在一些问题。基本上我需要做的是获取我拥有的ArrayList 并将信息导出到文本文件。我尝试了几种不同的 Google 解决方案,但都没有成功。

基本上我有两个ArrayList,两个名单,一个毕业生和一个本科生。我只需要将与这些ArrayList 关联的信息放入一个文本文件中。

我稍后需要将.txt 文件执行相反的操作(导入)到ArrayList,但我可以稍后解决。

有什么建议吗?

【问题讨论】:

  • 您需要说出文本文件中信息需要采用什么格式。或者,如果你不在乎,那就这么说吧。您还需要说明“毕业生”和“本科生”是如何表示的。它们是简单的字符串吗?他们是自定义类吗?它们是别的东西吗?
  • Writing arraylist to textfile 的可能重复项
  • 您使用 google 找到了哪些解决方案,它们是如何失败的?

标签: java serialization arraylist text-files


【解决方案1】:

如果您需要以特定格式写入数据,您可以使用PrintWriter 以您希望的任何方式将数据写入文件。这样做的问题是,您必须想办法重新读取文本文件并填充数据。

另一方面,您可以使用 XStream(tutorial here) 将文件编写为 XML。这将为您提供人类可读的文本文件(如上),但是,在填充数据时重新读取文本文件会容易得多。

最后,您可以使用ObjectOutputStream 写入数据并使用ObjectInputStream 重新读取数据。但是请注意,此方法不会产生人类可读的文本文件。此外,您的类需要实现Serializable 接口。

【讨论】:

    【解决方案2】:

    这是使用Apache commons-io library的解决方案:

    //Put all data into one big list, prepended with size of first list
    List<String> allData = new ArrayList<String>(1+grads.size()+undergrads.size());
    allData.add(String.valueOf(grads.size());
    allData.addAll(grads);
    allData.addAll(undergrads);
    FileUtils.writeLines(new File("list.txt"), allData);
    

    要读回数据:

    List<String> allData = FileUtils.readLines(new File("list.txt"));
    int gradsSize = Integer.parseInt(allData.get(0));
    List<String> grads = allData.subList(1, gradsSize+1);
    List<String> undergrads = allData.subList(1+gradsSize, allData.size());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 2016-02-12
      • 2014-02-05
      • 1970-01-01
      • 2021-01-23
      相关资源
      最近更新 更多