首页 > 解决方案 > 通过部分加载到内存对硬盘文件中的文本行进行排序| 爪哇

问题描述

我的任务是对太大而无法放入内存的文件进行排序。文件包含文本行。我做了什么:

  1. 按部分(允许大小)从原始文件中读取。
  2. 对每个部分进行排序
  3. 将每个排序的部分保存到临时文件

据我了解,接下来我应该做的是:

  1. 读取每个文件的第一行
  2. 将它们相互排序(使用局部变量临时存储它,但我不确定它是否会低于限制大小)
  3. 将第一行(作为排序的结果)写入最终文件
  4. 现在我需要从临时文件中删除我刚刚写的行
  5. 现在我需要重复步骤 1-4,直到所有行都被排序并从临时文件“传输”到最终文件

我最不确定第 4 步 - 是否有一个类可以查找一个值然后用这个值擦除行(那时我什至不知道该行来自哪个文件)?我认为这根本不是达到我的目标的正确方法。但我需要删除已经排序的行。而且我无法对内存中的文件数据进行操作。

标签: java

解决方案


你需要用 Java 做这个吗(假设是标签)?作为记忆明智的,它不会是有效的方式。在我看来,最简单的选择是sort直接在操作系统级别使用并直接对文件进行排序。

本文将为您提供有关如何使用排序的指南:https ://www.geeksforgeeks.org/sort-command-linuxunix-examples/

排序在 Windows 和 unix/linux 上都可用,并且可以处理大文件。


推荐阅读