java - 读取和解析平面文件的内存有效方式
问题描述
给定一个行数未知的管道分隔文件,我需要将其转换为多个 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"
}
]
解决方案
您可以阅读该文件并将每个部门保存DataOutputStream
为 json 文件。当您打开文件时,添加一个[
并在退出程序后关闭文件时,添加一个]
对于每一行,找到部门输出流并将整个 json 写入其中。
推荐阅读
- spring-cloud-dataflow - Why task launcher prunes the task instance history every time a new task instance is launched?
- amazon-web-services - Has anyone built an integration with any SMS Receivers?
- python - 使用tensorflow时在哪里可以找到ssd_mobilenet_v1_coco的标签映射文件(pbtxt)?
- c - C中算术表达式中的空格
- sql - Django 原始 SQL 查询 - 遍历 args,然后在查询中使用它
- python - 如何使用 python 将数据正确插入 MySQLdb?
- java - 加载相应的 jar 文件 (VLCJ) 后 JAVA 导入不起作用
- python - 如何根据其他列的多个突发事件转换列?
- python - Python:基于用户输入的条件退出
- sqlite - 如何在 SQLite PDO 中设置 legacy_file_format?