java - 通过部分加载到内存对硬盘文件中的文本行进行排序| 爪哇
问题描述
我的任务是对太大而无法放入内存的文件进行排序。文件包含文本行。我做了什么:
- 按部分(允许大小)从原始文件中读取。
- 对每个部分进行排序
- 将每个排序的部分保存到临时文件
据我了解,接下来我应该做的是:
- 读取每个文件的第一行
- 将它们相互排序(使用局部变量临时存储它,但我不确定它是否会低于限制大小)
- 将第一行(作为排序的结果)写入最终文件
- 现在我需要从临时文件中删除我刚刚写的行
- 现在我需要重复步骤 1-4,直到所有行都被排序并从临时文件“传输”到最终文件
我最不确定第 4 步 - 是否有一个类可以查找一个值然后用这个值擦除行(那时我什至不知道该行来自哪个文件)?我认为这根本不是达到我的目标的正确方法。但我需要删除已经排序的行。而且我无法对内存中的文件数据进行操作。
解决方案
你需要用 Java 做这个吗(假设是标签)?作为记忆明智的,它不会是有效的方式。在我看来,最简单的选择是sort
直接在操作系统级别使用并直接对文件进行排序。
本文将为您提供有关如何使用排序的指南:https ://www.geeksforgeeks.org/sort-command-linuxunix-examples/
排序在 Windows 和 unix/linux 上都可用,并且可以处理大文件。
推荐阅读
- javascript - 如何更改 D3 图表中 Y 轴的宽度?
- qt - 按下时更改 QFrame 框颜色和边框
- java - setOnCheckedChangeListener 方法在 JAVA 中是如何工作的?
- excel - 我想使用 excel 替换 url /abcd ..... 中的所有最后一个斜杠
- python - “回文数”解决方案的时间复杂度
- java - Java多重继承使用具有相同方法但不同参数的两个接口
- reactjs - React App - 包括 /health - 负载均衡器的健康端点
- python - Plotly Dash - 渐变线
- python - 带有 SQLAlchemy 的烧瓶:无法适应类型“dict”
- python - Message 类只能从 Message 继承 - Python