0

我有这段代码来检查是否在某个时间发送了日志行。问题是即使日志行不是我想要的时间(比如“稍后”然后搜索时间),文件指针也会超出。只有当该行最终被带到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),所以我逐行阅读。

4

1 回答 1

0

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

于 2016-04-20T23:47:48.243 回答