通过部分加载到内存对硬盘文件中的文本行进行排序| Java

通过部分加载到内存对硬盘文件中的文本行进行排序| Java,java,Java,我的任务是对太大而无法放入内存的文件进行排序。文件包含文本行。 我所做的: 按部分(允许的大小)从原始文件中读取 对每个部分进行排序 已将每个排序的零件保存到临时文件中 据我所知,下一步我应该做的是: 读取每个文件的第一行 将它们彼此排序(使用局部变量临时存储它,但我不确定它是否会低于限制大小) 将第一行(作为排序结果)写入最终文件 现在我需要从临时文件中删除我刚写的行 现在我需要重复步骤1-4,直到所有行都被排序并从临时文件“传输”到最终文件 我最不确定的是第4步-是否有一个类可以查找一个值,

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

  • 按部分(允许的大小)从原始文件中读取
  • 对每个部分进行排序
  • 已将每个排序的零件保存到临时文件中
  • 据我所知,下一步我应该做的是:

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

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

    您需要在Java中执行此操作吗(假设使用标记)?就内存而言,这不是一种有效的方法。在我看来,最简单的选择是使用
    sort
    ,直接在操作系统级别对文件进行排序

    本文将为您提供有关如何使用排序的指南:


    Sort在Windows和unix/linux上都可用,可以处理大文件。

    是的,我需要用Java进行排序。您看过之前的帖子了吗:这也是一种替代方法: