如何使用 randomAccessFile "peek"?

How to "peek" with randomAccessFile?

我有这段代码来检查是否在某个时间发送了日志行。问题是即使日志行不是我想要的时间(比如 "later" 然后搜索时间),文件指针也会超出。只有当该行最终被带到 answer List<String>

时,我才想增加文件指针
@Override
public List<String> getForMinuteTimeFrame(LocalTime currentTime) {
    List<String> lines = new ArrayList<>();
    String line = null;
    while ((line = randomAccessFile.readLine()) != null) {
        if (fetchTime(line).isEqual(currentTime)) {
            lines.add(line);
        }
    }
    return lines;
}

我怎样才能优雅地做到这一点?输入文件很大 (~250 MB),所以我逐行阅读。

您应该能够使用 "randomAccessFile.getFilePointer()" 获取当前文件点,并在每次成功读取您关心的行时存储它。然后在 return 之前,您可以使用 randomAccessFile.seek() 将当前文件位置设置回该位置,传递从 getFilePointer() 获得的值。这会将读取点恢复到读取最后一行之前的状态。