【问题标题】:How to "peek" with randomAccessFile?如何使用 randomAccessFile “窥视”?
【发布时间】:2016-04-20 23:06:02
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-02-19
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      相关资源
      最近更新 更多