首页 > 解决方案 > 读取和解析平面文件的内存有效方式

问题描述

给定一个行数未知的管道分隔文件,我需要将其转换为多个 JSON 文档——每个文档代表一个属于不同组的员工数组。

假设属于特定部门的所有员工都列在一起。永远不会出现属于同一部门的员工不集中在一起的情况。

虽然下面提供的示例输入足够小,但收到的实际文件却非常大——例如高达 100MB。

实现这一目标的最佳内存和 CPU 方式是什么?

样本输入:

Department|First Name|Last Name|Employee ID|Role
Accounting|Mark|Johnson|123|Manager
Accounting|John|Wayne|345|Sr. Accountant
Accounting|Marky|Mark|413|Jr. Accountant
HR|Susie|Johnson|542|Manager
HR|Lara|Wayne|4134|HR Rep
HR|Kira|Mark|642|Consultant

样本输出:

会计雇员.json

[
  {
    "firstName":"Mark",
    "lastName":"Johnson",
    "employeeId":"123",
    "role":"Manager"
  },
  {
    "firstName":"Marky",
    "lastName":"Mark",
    "employeeId":"413",
    "role":"Jr. Accountant"
  }

]

标签: java

解决方案


您可以阅读该文件并将每个部门保存DataOutputStream为 json 文件。当您打开文件时,添加一个[并在退出程序后关闭文件时,添加一个]

对于每一行,找到部门输出流并将整个 json 写入其中。


推荐阅读