我有一个缓冲阅读器,它逐行读取一个大文件以删除重复的行。
而不是将整个文件加载到内存中,我想通过使用两个缓冲读取器来做到这一点:第一个迭代文件的固定部分,将每个部分一个接一个地加载到内存中。
在每次迭代中,第二个缓冲读取器将从第一个缓冲读取器停止的位置到文件末尾检查加载的部分是否不再存在于文件中。
问题是我不能让新的独立缓冲读取器对象(不是引用)从第一个停止的位置开始。
我需要一种方法来找出第一个缓冲阅读器的文件位置,以便我可以告诉第二个缓冲阅读器从哪里开始。
到目前为止我已经尝试过:
将第一个对象发送到第二个的构造函数。
这实际上有效,但两者都有相同的迭代器,所以第一个与第二个一起移动到文件末尾
BufferedReader cleanfilereader2 = new BufferedReader(cleanfilereader);
bufferedReader.mark()
设置缓冲阅读器的位置,但我仍然需要知道第一个阅读器的位置。
笔记:
- 行数不是恒定的
- 无法将整个文件加载到内存中
- 时间和记忆都是问题