【发布时间】:2020-07-30 02:19:23
【问题描述】:
我有两个大约 150 mb 的大 txt 文件。我想从 file1 的每一行读取一些数据并扫描 file2 的所有行,直到找到匹配的数据。如果没有找到匹配的数据,我想将该行输出到另一个文件。
我希望程序使用尽可能少的内存。时间不是限制。
编辑1
我已经尝试了几个选项
Option1:我已经使用 BufferedReader、Scanner 和 apache commons FileUtils.lineIterator 读取了 file2。通过读取每一行将file2的数据加载到HashMap中。一次从file1中读取数据,并与HashMap中的数据进行比较。如果不匹配,则将该行写入文件3。
选项 2:使用上述三个读取器读取文件 1 中的每条记录的文件 2 n 次。每次读取后,我必须关闭文件并再次读取。我想知道最好的方法是什么。我还有其他选择吗
【问题讨论】:
-
这是一个有趣的问题,但到目前为止您尝试过什么,通过自己的研究发现了什么?
-
使用
BufferedReader读取File的内容,然后以你想要的方式进行比较。 -
@Abs 太好了,您能否更新您的问题以向我们展示您的尝试,然后我们可以进一步帮助您解决问题。有很多方法可以实现这一点(Scanner、BufferedReader),但是通过查看您的尝试,我们可以提出更好的建议。
-
如果你没问题,错误非常少,我想你可以使用选项 1,而不是在 hashmap 中逐行存储,你可以使用 md5 hash..
-
@aravind 好主意,您应该将其发布为答案。
标签: java performance java-8