如何用randomAccessFile“窥视”?

时间:2016-04-20 23:06:02

标签: java file random-access peek file-pointer

我有这段代码来检查是否在某个时间发送了日志行。问题是文件指针超过了,即使日志行不是我想要的时间(说“稍后”,然后搜索时间)。我想仅在最终将行传递到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),所以我逐行阅读。

1 个答案:

答案 0 :(得分:0)

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